Hard- & Symlinks
Dateien & Verzeichnisse
Was sind Links?
Ein Link ist ein Verweis auf eine Datei – vergleichbar mit einer Verknüpfung. Linux kennt zwei grundverschiedene Arten: den Hardlink und den symbolischen Link (Symlink). Um den Unterschied zu verstehen, musst du zuerst wissen, was eine Datei überhaupt ist. Genau dafür gibt es Inodes.
Inodes – die wahre Datei
Auf der Festplatte besteht jede Datei aus zwei Teilen: dem eigentlichen Inhalt (Datenblöcke) und einer Verwaltungsstruktur namens Inode. Der Inode speichert alle Metadaten: Größe, Besitzer, Rechte, Zeitstempel und wo die Datenblöcke liegen – aber nicht den Namen. Der Dateiname ist nur ein Eintrag in einem Verzeichnis, der auf eine Inode-Nummer zeigt. Die Inode-Nummer zeigt dir ls -i:
$ ls -i brief.txt 1842763 brief.txt
Hardlinks
Ein Hardlink ist ein zusätzlicher Name für dieselbe Inode. Beide Namen sind völlig gleichwertig – es gibt kein „Original“ und keine „Kopie“. Erstellt wird ein Hardlink mit ln ohne weitere Option:
$ ln brief.txt zweitname.txt $ ls -i brief.txt zweitname.txt 1842763 brief.txt 1842763 zweitname.txt
Beide haben dieselbe Inode-Nummer (1842763). Änderst du den Inhalt über einen Namen, siehst du die Änderung auch über den anderen. Erst wenn der letzte Name gelöscht wird, gibt der Kernel den Speicher frei. Die Spalte nach den Rechten in ls -l zählt übrigens, wie viele Hardlinks auf eine Inode zeigen.
Symlinks – symbolische Links
Ein Symlink ist dagegen eine eigene kleine Datei, die lediglich einen Pfad zu einer anderen Datei enthält – ähnlich einer Wegweiser-Tafel. Du erstellst ihn mit ln -s:
$ ln -s /etc/nginx/nginx.conf config-link $ ls -l config-link lrwxrwxrwx 1 anna anna 22 Jun 20 config-link -> /etc/nginx/nginx.conf
Das l ganz links und der Pfeil -> kennzeichnen einen Symlink. Löschst du das Ziel, zeigt der Symlink ins Leere – man spricht dann von einem kaputten (broken) Link.
Die Unterschiede im Überblick
| Eigenschaft | Hardlink | Symlink |
|---|---|---|
| Verweist auf | Inode (Daten) | Pfad (Name) |
| Über Dateisystem-Grenzen | Nein | Ja |
| Auf Verzeichnisse | Normal nicht | Ja |
| Bei gelöschtem Ziel | Daten bleiben erhalten | Link wird ungültig |
| Erstellen mit | ln | ln -s |
Wann was verwenden?
In der Praxis nutzt du fast immer Symlinks – sie sind flexibler, funktionieren über Partitionsgrenzen hinweg und können auf Verzeichnisse zeigen. Symlinks begegnen dir überall: etwa wenn /usr/bin/python auf python3.12 zeigt. Hardlinks sind seltener und kommen z. B. bei platzsparenden Backups zum Einsatz.
Was passiert mit einem Symlink, wenn die Zieldatei gelöscht wird?
Hinweis
Gib beim Erstellen eines Symlinks am besten einen absoluten Zielpfad an – relative Pfade werden relativ zum Speicherort des Links interpretiert, was leicht zu kaputten Links führt. Im letzten Kapitel geht es um Archive & Komprimierung.