Harter Link

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

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

[Bearbeiten] 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 "..".

[Bearbeiten] Anwendungsbeispiele

[Bearbeiten] 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.)

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

[Bearbeiten] 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.

[Bearbeiten] 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 verbreite Anwendung von Hard Links ist die Erstellung von Snapshots, bei denen statt eines kompletten Backups lediglich Hard Links erzeugt werden und so mit geringem zusätzlichen Speicherplatz die Veränderungen an einem Verzeichnisbaum rekonstruiert werden können.[1][2]
  • 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.

[Bearbeiten] 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".

[Bearbeiten] 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
Persönliche Werkzeuge
Buch erstellen