- 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 Dateisystem NTFS unter Windows erstellt werden.
Von „harten Links“ spricht man insbesondere, 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 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 beliebig viele Dateipfade (Verzeichniseinträge) geben, 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 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 zusätzliche Links jederzeit erstellen, z. B. ein Link "/home/wiki/nulllink" zum vorhandenen Gerät /dev/null:
> ln /dev/null /home/wiki/nulllink
(Das Beispiel funktioniert nur, wenn sich /home/wiki zufällig im gleichen Dateisystem wie /dev/null befindet. In modernen Linux-Distributionen und grundsätzlich bei FreeBSD (ab Version 5) ist das jedoch niemals der Fall, da /dev dort ein Mountpoint eines speziellen Gerätedateisystems ist.)
Windows
NTFS-Partitionen (nicht FAT und FAT32) unterstützen bis zu 1023 harte Links pro Datei. Zum Erstellen harter Links eignen sich beispielsweise fsutil hardlink utility (Windows XP), der mklink Befehl (Vista) oder Programme von Drittherstellern.
Um mit dem Microsoft-Tool fsutil den harten Link "EinLink.pdf" zu erzeugen, der auf die Datei "EinDokument.pdf" verweist, gibt man ein:
fsutil hardlink create EinLink.pdf EinDokument.pdf
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.
Anders als unter Unix kann kein harter Link gelöscht werden, solange die referenzierte Datei von einer Anwendung geöffnet, d.h. ein File Handle 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.
- 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.
Weblinks
- Link Shell Extension für Windows – Bequem im Explorer Links erstellen
- mklink für Windows 1.0 - Kommandozeilen-Befehl für Link-Erstellung unter Windows 2000/XP
- FreeDup - automatisiertes Erstellen von Links unter Linux/Unix
- Dupmerge - automatisiertes Erstellen von Links u. A. unter Linux/Unix
- AllDup Duplikatfinder (Byte-für-Byte-Vergleich) mit Option zum Erstellen von Hard- und Softlinks unter Windows. Läuft auch auf FAT Dateisystemen, logischerweise ohne die Option "Hardlinks erstellen".
-
Wikimedia Foundation.