Harter Link

Harter Link

Ein harter Link (engl. hard link, im deutschen Jargon auch Hardlink) ist ein Verzeichniseintrag in einem Dateisystem, der auf Dateien und Verzeichnisse verweist. Mit der Erstellung eines harten Links wird ein weiterer Name zu der Datei etabliert, der im Folgenden nicht mehr von den früheren Namen der Datei zu unterscheiden ist. Außer in Unix- und Linux-Systemen (also auch Mac OS X) können Hardlinks auch im Dateisystem NTFS unter Windows erstellt werden. Eine Datei oder ein Verzeichnis kann mit diesem Mechanismus an verschiedenen Orten im Dateisystem gleichzeitig erscheinen. Alle Zugriffe darauf werden auf der Ursprungsdatei bzw. dem Ursprungsverzeichnis ausgeführt.

Von „harten Links“ spricht man, wenn mehrere Einträge auf denselben Dateideskriptor verweisen, dessen Nummer eine Datei oder ein Verzeichnis systemintern identifiziert. Dieser Deskriptor heißt in Unix-Systemen Inode, unter NTFS File Record. Mehrere harte Links auf denselben Inode oder File Record sind gleichwertig und können in beliebiger Reihenfolge umbenannt oder gelöscht werden. Abgesehen von den Verzeichniseinträgen für das aktuelle und das übergeordnete Verzeichnis, . und .., verweisen harte Links fast immer auf Dateien. Da Deskriptornummern innerhalb von Partitionen verwaltet werden, sind harte Links nur innerhalb derselben Partition möglich.

Im Unterschied zu harten Links verweisen symbolische Links nicht auf einen Deskriptor, sondern auf einen weiteren Verzeichniseintrag.

Inhaltsverzeichnis

Aufbau (Unix)

Jeder Verzeichniseintrag besteht aus dem Dateinamen und der zugeordneten Inode-Nummer. Zu jedem Inode kann es nahezu beliebig viele Dateipfade (Verzeichniseinträge) geben (meist sind 32766 Links möglich), also auch unterschiedliche Namen für dieselbe Datei.

Ein Vorteil dieses Konzepts zeigt sich beim Entfernen von Links:

Es gibt bei Unixsystemen streng genommen keine Operation zum Löschen einer Datei, sondern nur eine unlink-Operation zum Löschen von Links. Im Inode einer Datei wird die aktuelle Anzahl der Links gespeichert. Erst wenn der letzte Link zu einer Datei gelöscht ist, der Zähler im Inode also den Wert Null hat, wird die Datei selbst (Inode und Datencluster) zur Wiederbeschreibung freigegeben und damit logisch gelöscht.

Bemerkenswert ist das Verhalten harter Links, wenn ein Benutzer eine Datei zu löschen versucht, die ein Programm noch geöffnet hält: Da das Öffnen einer Datei den Zähler um eins erhöht, führt das versuchte Löschen zum „Verschwinden“ der Datei (genauer: des gelöschten Links), aber nicht zur Freigabe des Festplattenspeichers – dieser wird erst freigegeben, nachdem die Datei von allen Applikationen geschlossen wurde.

Um Konsistenzprobleme zu vermeiden, dürfen gewöhnliche Benutzer für Verzeichnisse keine zusätzlichen harten Links erstellen: Die Links werden von einem Verzeichnis-Inode automatisch verwaltet, und der eindeutige eigentliche Verzeichnisname taucht als Link genau einmal im übergeordneten Verzeichnis auf. Daneben gibt es in dem Verzeichnis selbst einen Link namens „.“ und in allen untergeordneten Verzeichnissen je einen Link namens „..“.

Anwendungsbeispiele

Unix

Für sonstige Dateien lassen sich mit dem Befehl ln jederzeit zusätzliche Links erstellen, z. B. ein Link /home/wiki2/same-picture zur vorhandenen Datei /home/wiki1/picture: ln /home/wiki1/picture /home/wiki2/same-picture

Andere Möglichkeiten zum Erstellen von Hard Links sind gcp --link und rsync --link-dest.

Mit dem Befehl stat lässt sich ermitteln, wie viele harte Links auf eine Datei zeigen. Der Befehl ls -l zeigt auf vielen Unix-Systemen in der zweiten Spalte die Anzahl harter Links der zugehörigen Datei.

Windows

NTFS-Partitionen (nicht FAT und FAT32) unterstützen bis zu 1023 harte Links pro Datei. Zum Erstellen harter Links eignen sich beispielsweise das Programm fsutil hardlink utility (unter Windows XP), der mklink-Befehl (unter Vista) oder Programme anderer Hersteller.

Um mit dem Microsoft-Werkzeug fsutil den harten Link „Neue Linkdatei.txt“ zu erzeugen, der auf die Datei „Quelldatei.txt“ verweist, ist das folgende Kommando einzugeben:

fsutil hardlink create "Neue Linkdatei.txt" "Quelldatei.txt"

bzw. ab Vista:

mklink /H "Neue Linkdatei.txt" "Quelldatei.txt"

Zulässig wäre beispielsweise:

D:\dira\Anton.txt → D:\dirb\dirx\Berta.txt oder
D:\dirc\Carla.bak → D:\dirb\dirx\Berta.txt usw.

Dadurch würden alle Zugriffe auf die Datei D:\dira\Anton.txt für den Anwender bzw. das Programm nach D:\dirb\dirx\Berta.txt umgeleitet. Es wird dann auch tatsächlich diese Datei bearbeitet, der Anwender merkt davon nichts.

Anders als unter Unix kann kein harter Link gelöscht werden, solange die referenzierte Datei von einer Anwendung geöffnet, d.h. ein Filehandle darauf gesetzt ist.

Anmerkungen

  • Harte Links werden beim Systembackup durch Kopien der verlinkten Dateien ersetzt.
  • Harte Zusatzlinks werden für „normale“ Dateien nicht sehr oft genutzt, da für mehrfache Verweise auf eine Datei auch symbolische Links zur Verfügung stehen.
  • Eine verbreitete Anwendung von Hard Links ist die Erstellung von Snapshots, bei denen statt eines kompletten neuen Backups lediglich Hard Links auf ein bestehendes Backup erzeugt werden und so mit geringem zusätzlichen Speicherplatz die Veränderungen an einem Verzeichnisbaum rekonstruiert werden können.[1][2]
  • Das Versionsverwaltungssystem Git benutzt harte Links beim Klonen von lokalen Repositories. Da Git in der Regel die komplette Historie eines Projekts lokal verfügbar hält, lässt sich auf diese Weise Speicherplatz sparen.[3]
  • Unter NTFS erfüllen Abzweigungspunkte („Junctions“) eine ähnliche Funktion wie harte Links, wenn Verzeichnisse auf verschiedenen Partitionen oder Festplatten desselben Computers verlinkt werden sollen, in der Art
C:\dira → D:\dirb\dirx
Nicht möglich sind jedoch
1. die Verlinkung von Dateinamen über einen Abzweigungspunkt, wie etwa
D:\dira\Anton.txt → D:\dirb\dirx\Berta.txt oder
2. die Verlinkung von Verzeichnissen auf einem Netzlaufwerk.

Einzelnachweise

  1. Easy Automated Snapshot-Style Backups with Linux and Rsync
  2. Rob Flickenger: Linux Server Hacks Hack 42, Automated Snapshot-Style Incremental Backups with rsync
  3. http://www.kernel.org/pub/software/scm/git/docs/git-clone.html

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Symbolic link — Eine symbolische Verknüpfung, auch symbolischer Link, Symlink oder Softlink genannt, ist eine Verknüpfung in einem Dateisystem (Datei oder Verzeichnis), die auf eine andere Datei oder ein anderes Verzeichnis verweist. Es ist also lediglich eine… …   Deutsch Wikipedia

  • Symbolischer Link — Eine symbolische Verknüpfung, auch symbolischer Link, Symlink oder Softlink genannt, ist eine Verknüpfung in einem Dateisystem (Datei oder Verzeichnis), die auf eine andere Datei oder ein anderes Verzeichnis verweist. Es ist also lediglich eine… …   Deutsch Wikipedia

  • Hard link — Ein harter Link (engl. hard link, im deutschen Jargon auch Hardlink) ist ein Verzeichniseintrag in einem Dateisystem, der indirekt auf Dateien und Verzeichnisse verweist. Außer in Unix Systemen (also auch Mac OS X) können Hardlinks auch im… …   Deutsch Wikipedia

  • Junction Point — Eine symbolische Verknüpfung, auch symbolischer Link, Symlink oder Softlink genannt, ist eine Verknüpfung in einem Dateisystem (Datei oder Verzeichnis), die auf eine andere Datei oder ein anderes Verzeichnis verweist. Es ist also lediglich eine… …   Deutsch Wikipedia

  • Softlink — Eine symbolische Verknüpfung, auch symbolischer Link, Symlink oder Softlink genannt, ist eine Verknüpfung in einem Dateisystem (Datei oder Verzeichnis), die auf eine andere Datei oder ein anderes Verzeichnis verweist. Es ist also lediglich eine… …   Deutsch Wikipedia

  • Hardlink — Ein harter Link (engl. hard link, im deutschen Jargon auch Hardlink) ist ein Verzeichniseintrag in einem Dateisystem, der indirekt auf Dateien und Verzeichnisse verweist. Außer in Unix Systemen (also auch Mac OS X) können Hardlinks auch im… …   Deutsch Wikipedia

  • Symbolische Verknüpfung — Eine symbolische Verknüpfung, auch symbolischer Link, Symlink oder Softlink genannt, ist eine Verknüpfung in einem Dateisystem (Dateien und Verzeichnisse), die auf eine andere Datei oder ein anderes Verzeichnis verweist. Es ist also lediglich… …   Deutsch Wikipedia

  • I-Node — Ein Inode (auch I Node, Kurzwort aus: engl. index node) ist ein Eintrag in einem Unix Dateisystem, der Metadaten einer Datei enthält. In den meisten Unix Betriebssystemen werden Dateien nur über ihre Inodes aufgerufen. Jeder Inode ist durch eine… …   Deutsch Wikipedia

  • I-node — Ein Inode (auch I Node, Kurzwort aus: engl. index node) ist ein Eintrag in einem Unix Dateisystem, der Metadaten einer Datei enthält. In den meisten Unix Betriebssystemen werden Dateien nur über ihre Inodes aufgerufen. Jeder Inode ist durch eine… …   Deutsch Wikipedia

  • Inode (Begriff) — Ein Inode (auch I Node, Kurzwort aus: engl. index node) ist ein Eintrag in einem Unix Dateisystem, der Metadaten einer Datei enthält. In den meisten Unix Betriebssystemen werden Dateien nur über ihre Inodes aufgerufen. Jeder Inode ist durch eine… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”