Ln: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
K tf
Tuxnix (Diskussion | Beiträge)
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{SEITENTITEL:ln}}
{{SEITENTITEL:ln}}
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.
Mit dem Programm {{ic|ln}} ist es möglich, ''Links'' auf Dateien zu erzeugen. Bei diesen Links wird zwischen ''Hardlinks'' und ''symbolischen Links'', auch ''Softlinks'' genannt, unterschieden.


== Hardlinks ==
== 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 Datei verweisen. Wenn der letzte vorhandene Hardlink gelöscht wird, ist die Datei nicht mehr erreichbar. Hardlinks werden wie folgt gesetzt:
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
  $ ln zieldatei linkname
Zeile 9: Zeile 13:
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.
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.
Wenn man wissen möchte, wie viele Hardlinks, auf eine Datei verweisen, kann man sich des Befehls {{ic|ls -l}} bedienen. Die Angabe hinter den Zugriffsrechtsinformationen gibt die Anzahl der Hardlinks auf die entsprechende Datei an.


$ ls -l
{{hc|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 file1
-rw-r--r-- 2 user group 4,0K 16. Dez 13:44 file2}}
-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.  
Im Beispiel verweisen also zwei Hardlinks auf die Datei {{ic|file1}}. Dies ist ein mal die Datei {{ic|file1}} selbst, sowie die Datei {{ic|file2}}, welche ein Hardlink auf den selben Teil der Festplatte darstellt. {{ic|file2}} verfügt ebenfalls über zwei Hardlinks, nämlich {{ic|file2}} selbst, sowie {{ic|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.
Wenn man jetzt ein {{ic|file3}} als Hardlink auf {{ic|file1}} oder {{ic|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 ==
== 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.
Ein symbolischer Link hingegen ist ein Zeiger auf einen anderen Dateisystemeintrag und nicht auf die Position der Datei auf der Festplatte. Bei einem {{ic|ls -l}} wird das Linkziel angezeigt, zudem werden Softlinks nicht gezählt.


$ ls -l
{{hc|ls -l|[…]
[…]
-rw-r--r-- 1 user group  551 21. Nov 11:17 file1
-rw-r--r-- 1 user group  551 21. Nov 11:17 file1
lrwxrwxrwx 1 user group    2 18. Dez 11:59 file2 -> 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:
Im Beispiel ist {{ic|file2}} ein Softlink auf {{ic|file1}}. Wenn man {{ic|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
  $ 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.
Neben dem Parameter {{ic|-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.


[[Kategorie:Konsole]]
[[Kategorie:Konsole]]
[[Kategorie:Befehle]]
[[Kategorie:Grundlagen]]

Aktuelle Version vom 1. April 2017, 15:20 Uhr

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.