Symbolic Links und Hard Links unter Linux und Ubuntu  Bild © PCMasters.deSymbolic Links und Hard Links unter Linux und Ubuntu (Bild © PCMasters.de)

Um zu verstehen, wie Verknüpfungen funktionieren, muss man zunächst den Inode (Indexknoten) verstehen. In einem Linux-Dateisystem ist ein Dateiname nicht die Datei selbst, sondern vielmehr ein Verweis auf einen Inode. Der Inode ist eine Datenstruktur, die alle wichtigen Metadaten zu einer Datei speichert, darunter:

  • Dateiberechtigungen und Eigentumsrechte
  • Dateigröße
  • Zeitstempel (Erstellung, Änderung und Zugriff)
  • Zeiger auf die eigentlichen Datenblöcke auf der physischen Festplatte, auf denen der Inhalt gespeichert ist

Wenn ein Nutzer eine Datei öffnet, sucht das System anhand des Dateinamens den zugehörigen Inode und folgt dann den Zeigern, um die Datenblöcke abzurufen.

Ein Hardlink ist im Wesentlichen ein zusätzlicher Dateiname, der direkt auf denselben Inode verweist wie die Originaldatei. In dieser Konfiguration gibt es im technischen Sinne keine „Originaldatei“; stattdessen verweisen mehrere Verzeichniseinträge auf dieselben physischen Daten.

  • Beständigkeit: Wird der ursprüngliche Dateiname gelöscht, bleiben die Daten über den Hardlink weiterhin zugänglich, da der Inode erst gelöscht wird, wenn die Gesamtzahl der Verweise (Link-Zahl) Null erreicht.
  • Einschränkungen: Für Verzeichnisse können keine Hardlinks erstellt werden, um rekursive Schleifen im Dateisystem zu verhindern. Außerdem sind sie auf dieselbe physische Partition oder dasselbe Dateisystem beschränkt, da Inode-Nummern nur innerhalb eines einzelnen Dateisystems eindeutig sind.

Ein symbolischer Link, auch Symlink genannt, ist ein spezieller Dateityp, der eine Textzeichenfolge enthält, die einen Pfad zu einer anderen Datei oder einem anderen Verzeichnis darstellt. Im Gegensatz zu einem Hardlink verweist ein Symlink nicht auf einen Inode, sondern auf einen Dateinamen.

  • Flexibilität: Symlinks können sowohl auf Dateien als auch auf Verzeichnisse verweisen.
  • Dateisystemübergreifende Unterstützung: Da sie auf einen Pfad statt auf einen bestimmten Inode verweisen, können Symlinks auf Ziele auf verschiedenen Partitionen oder über das Netzwerk eingebundenen Laufwerken verweisen.
  • Abhängigkeit: Wird die Zieldatei verschoben oder gelöscht, wird der Symlink dangling. Er existiert zwar weiterhin, verweist aber auf einen Pfad, der die beabsichtigten Daten nicht mehr enthält.

Befehlsausführung und Überprüfung

Beide Link-Typen werden mit dem Befehl ln verwaltet.

Das Flag -s wird verwendet, um einen symbolischen Link anzugeben.

ln -s [Zielpfad] [Linkname] 

Beispiel: Erstellen eines Links zu einer Systemprotokolldatei: ln -s /var/log/syslog ~/syslog-link.

Wenn du das -s-Flag weglässt, erstellt das System einen Hardlink.

ln [Zieldatei] [Linkname]

Beispiel: ln original.txt backup_hardlink.txt

Überprüfungsmethoden

Um einen symbolischen Link zu überprüfen, zeigt der Befehl ls -l den Pfad an, dem der Link folgt. Mit dem Befehl readlink lässt sich der Zielpfad ermitteln und readlink -f liefert den absoluten kanonischen Pfad.

Um einen Hardlink zu überprüfen, wird der Befehl ls -li verwendet, um die Inode-Nummer anzuzeigen. Wenn zwei Dateien dieselbe Inode-Nummer haben, sind sie über einen Hardlink verbunden.