Harte Links (Hardlinks)

Ein harter Link (engl. Hard Link) ist ein Verweis auf eine bestehende Datei im Dateisystem. Alle Verweise auf ein und dieselbe Datei sind völlig gleichberechtigt und nicht voneinander zu unterscheiden.

Einsatzgebiete

Harte Links können eingesetzt werden, um Dateien an einer anderen Stelle im Dateisystem „einzublenden“. Wird eine hart verlinkte Datei geöffnet und geändert, so wirkt sich dies auf alle verlinkten Dateien aus. Durch das Überschreiben einer hart verlinkten Datei geht, wie zu erwarten ist, die Verlinkung verloren. Beispielsweise geschieht dies beim Bearbeiten mit einem Programm, dass beim Speichern die Datei immer neu erzeugt. Normale und hart verlinkte Dateien verhalten sich völlig identisch, so dass Programme die Verlinkung nicht bemerken. Harte Links werden in der Praxis eher selten verwendet

Harte Links unter Windows

Unter Windows werden harte Links ausschließlich im NTFS-Dateisystem unterstützt. Sie können nicht partitionsübergreifend erzeugt werden. Harte Links für Verzeichnisse sind nicht möglich. Ab Windows XP kann ein harter Link mit folgendem Kommandozeilenbefehl erstellt werden:

fsutil hardlink create <NewFileName> <ExistingFileName>

Anwendungsentwickler können ab Windows 2000 auf die Funktion CreateHardLink der Windows-API zurückgreifen, die in der Systembibliothek „kernel32.dll“ definiert ist. Der letzte Parameter lpSecurityAttributes ist reserviert und muss den Wert NULL enthalten.

BOOL CreateHardLink(
  LPCTSTR lpFileName,
  LPCTSTR lpExistingFileName,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

.NET-Anwendungen können die Funktion wie folgt importierten. Für lpSecurityAttributes muss hier der Wert IntPtr.Zero übergeben werden.

[DllImport("kernel32.dll", CharSet=CharSet.Unicode)]
public static extern bool CreateHardLink(
  string lpFileName,
  string lpExistingFileName,
  IntPtr lpSecurityAttributes
);

Harte Links unter Linux

Harte Links können auch unter Linux nicht partitionsübergreifend erzeugt werden. Folgender Kommandozeilenbefehl dient zur Generierung eines harten Links:

ln <ExistingFileName> <NewFileName>

Ähnliche Artikel

Schreiben Sie einen Kommentar