ln-Befehl unter Linux

Soft- und Hardlinks verwenden

In Linux bieten Links eine Möglichkeit, auf Dateien oder Verzeichnisse zu verweisen, ohne Daten zu duplizieren. Das spart Platz und macht Systeme flexibler. Es gibt zwei Haupttypen: Softlinks und Hardlinks.

Soft Links werden auch symbolische Links genannt. Sie sind wie eine Verknüpfung ein Verweis auf eine Zieldatei oder einen Zielordner. Wenn das Ziel verschoben, umbenannt oder gelöscht wird, dann funktioniert der symbolische Link nicht mehr.

Erstellung

Mit diesem Schema kannst du Softlinks erstellen:

1
ln -s [Quelle] [Soft_Link]

Ganz konkret könnte das so aussehen:

1
ln -s /home/sal/file.txt soft_link.txt

Anwendungsfall

Verwende Softlinks, wenn du einen Verweis auf eine Datei benötigst, die sich möglicherweise auf einem anderen Dateisystem befindet, oder wenn du eine Verknüpfung brauchst, die aktualisiert werden kann, wenn das Ziel verschoben wird.

Ein Hardlink ist ein direkter Verweis auf die Daten auf der Festplatte. Mehrere Hardlinks teilen sich daher denselben Inode. Das Löschen der Originaldatei hat keine Auswirkungen auf den Hardlink, solange mindestens ein Link vorhanden ist.

Erstellung

Mit diesem Schema kannst du Hardlinks erstellen:

1
ln [Quelle] [Hard_Link]

Ganz konkret könnte das so aussehen:

1
ln /home/sal/file.txt hard_link.txt

Anwendungsfall

Verwende Hardlinks, wenn du stabile Links brauchst, die auch dann funktionsfähig bleiben, wenn die Quelle verschoben, umbenannt oder gelöscht wird.

Softlinks haben in Datei-Listings den Typ l und hinter den Namen steht -> /pfad/zur/quelle.

Beispiel:

1
2
3
ls -l soft_link.txt
# Beispiel-Ausgabe:
lrwxrwxrwx. 1 sal sal 18 Sep 17 21:13 soft_link.txt -> /home/sal/file.txt

Soft Links kannst du mit dem Parameter lname von find aufspüren.

Beispiel:

1
find / -type l -lname '/home/sal/file.txt'

Hard Links haben in Datei-Listings einen Link-Count grösser als 1.

Beispiel:

1
2
3
ls -l hard_link.txt
# Beispiel-Ausgabe:
-rw-r--r--. 2 sal sal 0 Sep 17 21:13 hard_link.txt

Finden kannst du Hardlinks in zwei Schritten. Mit dem Parameter -i von ls ermittelst du zunächst den Inode. Dann suchst du mit find nach allen Referenzen auf dieses Element.

Beispiel:

1
2
3
4
5
6
7
8
ls -i /home/sal/file.txt'
# Beispiel-Ausgabe:
1691137 file.txt

find ~ -inum 1691137
# Beispiel-Ausgabe:
/home/sal/file.txt
/home/sal/hard_link.txt

Wichtige Gemeinsamkeit

Egal, ob du die über Quelle oder über den Link den Inhalt editierst: Es wird immer in beiden sichtbar sein. Das gilt sowohl für Hard Links, als auch für Soft Links.

Die Berechtigungen für einen Softlink sind immer rwxrwxrwx und können auch nicht geändert werden, sodass effektiv die Berechtigungen vom Quell-Element gelten. Und auch bei Hardlinks musst du beachten, dass die Berechtigungen auf Quelle und Ziel immer gleich sind, weil diese als Metadaten zum Inode gehören.

Wichtige Unterschiede

  • Softlinks funktionieren über Partitionen hinweg, Hardlinks nicht
  • Softlinks funktionieren nicht mehr, wenn ihre die Quelle verändert
  • Hardlinks funktionieren so lange es mindestens einen Verweis auf den dazugehörigen Inode gibt

Empfehlungen

  • immer für Quelle und Ziel kompletten Pfad verwenden, das ist robuster für das Verschieben der Quelle
  • lässt man den Namen für den Link weg, so wird automatisch der Name vom Quell-Element verwendet

Hilfe erhalten

Wenn du mehr zu Links unter Linux wissen möchtest, dann empfehle ich dir diese Befehle:

1
2
tldr ln
man ln

Für den Befehl tldr musst du das gleichnamige Paket tldr installieren.

Erstellt mit Hugo
Theme Stack gestaltet von Jimmy