Nein, eine harte Verbindung ist völlig anders. Ein Softlink ist näher an einer Windows-Verknüpfung (obwohl es wichtige Unterschiede gibt, sind symbolische Verknüpfungen Windows-Verknüpfungen ähnlicher als harte Verknüpfungen). Eine harte Verbindung ist etwas anderes und eine, die Sie so gut wie nie brauchen werden.
Kurz gesagt, mit diesem Befehl wird ein Softlink erstellt:
ln -s foo bar
Wenn Sie dann rennen ls -l
, werden Sie sehen:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Das ->
heißt, das bar
ist ein Link zu foo
. Wenn Sie also bar
beispielsweise mit einem Texteditor öffnen, wird die separate Datei tatsächlich geöffnet foo
. Durch das Löschen bar
wird jedoch nur die Verknüpfung gelöscht. Die Datei wird dadurch nicht beeinflusst foo
.
Harte Links werden dagegen mit dem folgenden Befehl erstellt:
ln foo bar
Wenn Sie jetzt ausführen ls -l
, gibt es keinen Hinweis auf eine Beziehung zwischen den Dateien:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Aber - und das ist sehr wichtig - das sind eigentlich die gleichen Dateien . Dateien auf Unix-Dateisystemen werden mithilfe von Inodes gespeichert . Ein Inode ist im Grunde die Art und Weise, wie das Dateisystem einen Dateinamen einem bestimmten Speicherort auf der physischen Festplatte zuordnet. Hardlinks sind also Dateien, die auf denselben Inode verweisen wie ihr Ziel. Eine andere Art, dies zu formulieren, ist, dass alle Dateien tatsächlich feste Links sind, die auf ihre Inodes verweisen. Wenn Sie eine feste Verknüpfung zu einer Datei herstellen, wird lediglich ein neuer Zeiger (eine neue Datei) auf dem Dateisystem erstellt, der auf denselben Inode verweist. Jeder Inode kann mehrere Dateien enthalten, die darauf verweisen, eine oder keine.
Um dies besser zu verstehen, verwenden Sie ls -i
die Option, die den mit einer Datei verknüpften Inode anzeigt. Lassen Sie uns einen Softlink und einen Hardlink erstellen und sehen, was passiert:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Überprüfen Sie nun ihre Inodes:
Wie Sie oben sehen können, beide foo
und HardLinkToFoo
haben die gleiche Inode (16648029) , während SoftLinkToFoo einen anderen (16648036) hat.
Was passiert , wenn wir umbenennen foo
mit mv foo bar
?
Die rote Farbe zeigt einen defekten Softlink an, dessen Ziel nicht mehr gefunden werden kann. Dies liegt daran, dass Softlinks auf den Namen einer Datei verweisen, nicht auf ihren Inode. Beachten Sie, dass der Inode trotz Namensänderung derselbe bleibt, sodass der Hardlink in Ordnung ist und weiterhin funktioniert.
Zusammenfassend sind harte Links eigentlich zwei Manifestationen derselben Datei. Sie sind Zeiger auf denselben Abschnitt der Festplatte. Softlinks sind nur Verknüpfungen. Um eine echte Analogie zu erhalten, sind Hardlinks wie zwei verschiedene Telefonnummern für dieselbe Telefonleitung und Softlinks wie zwei verschiedene Telefonleitungen im selben Haus.