ln

Aus wiki.archlinux.de
Wechseln zu: Navigation, Suche

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.