ln

Aus wiki.archlinux.de

Mit dem Programm ln ist es möglich, Links auf Dateien zu erzeugen. Bei diesen Links wird zwischen Hardlinks und symbolischen Links, auch Softlinks genannt, unterschieden.

Hardlinks

Durch einen Hardlink erzeugt man einen neuen Namen an einem neuen Ort im Dateisystem für eine Datei, so dass man auf die Datei sowohl vom alten Ort, als auch vom neuen gleichermaßen erreichen kann, da die Einträge im Dateisystem nur Verweise auf den Speicherort auf der Festplatte sind.

Bei mehreren Hardlinks auf einen Speicherbereich der Festplatte kann man nicht mehr sagen, welcher Link die „Originaldatei“ ist, da alle Links gleichberechtigt auf die Daten auf der Festplatte verweisen. Wenn der letzte vorhandene Hardlink entfernt wird, ist der Speicherort auf der Festplatte nicht mehr ohne weiteres erreichbar, umgangssprachlich ist dies das Löschen einer Datei.

Hardlinks werden wie folgt gesetzt:

$ ln zieldatei linkname

Man kann keine Hardlinks auf Verzeichnisse setzen, da dies bei Programmen, die rekursiv das Dateisystem durchlaufen (z.B. eine Suche) zu einer Endlosschleife führen kann.

Wenn man wissen möchte, wie viele Hardlinks, auf eine Datei verweisen, kann man sich des Befehls ls -l bedienen. Die Angabe hinter den Zugriffsrechtsinformationen gibt die Anzahl der Hardlinks auf die entsprechende Datei an.

ls -l
[…]
-rw-r--r-- 2 user group 4,0K 16. Dez 13:44 file1
-rw-r--r-- 2 user group 4,0K 16. Dez 13:44 file2

Im Beispiel verweisen also zwei Hardlinks auf die Datei file1. Dies ist ein mal die Datei file1 selbst, sowie die Datei file2, welche ein Hardlink auf den selben Teil der Festplatte darstellt. file2 verfügt ebenfalls über zwei Hardlinks, nämlich file2 selbst, sowie file1. Da es keinen „Original-Hardlink“ gibt, werden alle Hardlinks als „dieser und die anderen“ gezählt.

Wenn man jetzt ein file3 als Hardlink auf file1 oder file2 erstellen würde, hätten alle drei Dateien die Angabe von drei Hardlinks. Da Hardlinks direkt auf die jeweiligen Positionen auf der Festplatte verweisen, ist es unwichtig, ob die Datei, auf die man den Hardlink erstellt hat, im Nachhinein gelöscht wird.

Softlinks

Ein symbolischer Link hingegen ist ein Zeiger auf einen anderen Dateisystemeintrag und nicht auf die Position der Datei auf der Festplatte. Bei einem ls -l wird das Linkziel angezeigt, zudem werden Softlinks nicht gezählt.

ls -l
[…]
-rw-r--r-- 1 user group  551 21. Nov 11:17 file1
lrwxrwxrwx 1 user group    2 18. Dez 11:59 file2 -> file1

Im Beispiel ist file2 ein Softlink auf file1. Wenn man file1 nun löschen würde, würde der Softlink nach wie vor noch bestehen und auf die Datei verweisen, allerdings gibt es die Datei nicht mehr, und der Link ist ungültig. Softlinks können im Gegensatz zu Hardlinks auch auf Verzeichnisse erstellt werden. Softlinks werden wie folgt erstellt:

$ ln -s zieldatei linkname

Neben dem Parameter -s gibt es noch weitere Möglichkeiten, das Erstellen der Links zu beeinflussen. Zudem kann man sowohl relative, als auch absolute Zieldateiangaben machen. Wenn der Softlink dann verschoben wird, kann er ungültig werden, daher ist zu empfehlen, immer absolute Quelldateiangaben zu machen. Bei Hardlinks ist dies jedoch irrelevant.