Wikipedia definiert einen Hardlink als:
Ein Verzeichniseintrag, der einer Datei in einem Dateisystem einen Namen zuordnet. (Ein Verzeichnis ist selbst eine spezielle Art von Datei, die eine Liste solcher Einträge enthält.) Der Begriff wird in Dateisystemen verwendet, in denen mehrere feste Verknüpfungen für dieselbe Datei erstellt werden können.
Ich frage mich, ob das Konzept der festen Verknüpfung dem Windows-Konzept der Verknüpfung entspricht .
Wenn harte Verknüpfungen nicht mit Verknüpfungen gleichzusetzen sind, welche Windows-Funktion ist dann den harten Verknüpfungen am nächsten?
Antworten:
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:
Wenn Sie dann rennen
ls -l
, werden Sie sehen:Das
->
heißt, dasbar
ist ein Link zufoo
. Wenn Sie alsobar
beispielsweise mit einem Texteditor öffnen, wird die separate Datei tatsächlich geöffnetfoo
. Durch das Löschenbar
wird jedoch nur die Verknüpfung gelöscht. Die Datei wird dadurch nicht beeinflusstfoo
.Harte Links werden dagegen mit dem folgenden Befehl erstellt:
Wenn Sie jetzt ausführen
ls -l
, gibt es keinen Hinweis auf eine Beziehung zwischen den Dateien: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:Überprüfen Sie nun ihre Inodes:
Wie Sie oben sehen können, beide
foo
undHardLinkToFoo
haben die gleiche Inode (16648029) , während SoftLinkToFoo einen anderen (16648036) hat.Was passiert , wenn wir umbenennen
foo
mitmv 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.
quelle
rm
oderunlink()
) einer festen Verknüpfung die Verknüpfungsanzahl nur verringert, bis die Verknüpfungsanzahl Null erreicht, wenn die vom Dateiinhalt belegten Blöcke freigegeben werden. Ich bin mir nicht sicher, ob die Aussage "Hardlinks sind eigentlich zwei Instanzen derselben Datei" richtig ist, da die beiden Namen auf denselben Inode und damit auf denselben Inhalt verweisen, anstatt auf zwei Instanzen der Datei selbst irgendein Sinn.Es gibt eine gute Erklärung dafür, was weiche und harte Links sind, aber eines muss noch geklärt werden.
Windows- Verknüpfungen sind weder Softlinks noch Hardlinks äquivalent oder ähnlich . Auf Dateisystemebene handelt es sich lediglich um Dateien. Es ist die Shell, die ihre Struktur versteht und sie als Links interpretiert. Windows-Verknüpfungen können auch auf Objekte in Shell-Namespaces verweisen, die sich nicht auf das Dateisystem beziehen (Drucker, Elemente der Systemsteuerung, virtuelle Ordner).
Windows-Verknüpfungen enthalten neben dem Namen des Dateisystemobjekts die folgenden Informationen: PIDL (undurchsichtiger binärer "Pfad" im Shell-Namespace), Beschreibung, Tastenkürzel, Symbol, Arbeitsverzeichnis. Windows fügt auch NTFS-Objekt-IDs hinzu, wenn das NTFS-Dateisystem verwendet wird, um fehlerhafte Verknüpfungen zu beheben.
Das grobe Äquivalent einer Windows-Verknüpfung ist eine .desktop- Datei. Siehe diese Frage unter SuperUser: Gibt es unter Linux ein Äquivalent zu .lnk?
quelle
Nein. Unter Linux sieht die Sache anders aus.
Jede Datei wird durch ein Objekt namens "inode" dargestellt. Jedem Inode ist eine Nummer (ID) zugeordnet.
Wie wir wissen, können sich Menschen nicht gut an Zahlen erinnern, sondern an Namen. (So haben sich Telefonbücher entwickelt)
Aus diesem Grund wurde der Dateiname in das Bild eingefügt, um jedem Inode einen lesbaren Namen zu geben. Grundsätzlich bindet ein Hardlink einen Dateinamen an eine Inode. Eine Inode kann mehrere Hardlinks haben. Wenn für einen bestimmten Inode keine Hardlinks vorhanden sind, wird der vom Inode verwendete Speicherplatz möglicherweise für neue Dateien neu zugewiesen. Das heißt, für jede Datei muss mindestens ein Hardlink vorhanden sein. Der Dateiname (angezeigt als der Dateiname / das Symbol, das Sie im Dateibrowser sehen) selbst ist ein Hardlink.
In Windows ist die Verknüpfung eine separate Datei (* .lnk-Datei). Es enthält Informationen zur Originaldatei (verständlicherweise den Dateipfad). In der Linux-Wahrnehmung wäre eine Windows-Verknüpfung ein weiterer Inode, der fest mit einem Dateinamen verknüpft ist, der mit '.lnk' endet.
quelle
Unter Windows können Sie auch Hardlinks erstellen, wenn Sie über ein NTFS-Dateisystem verfügen.
Die Dateien müssen sich auf demselben logischen Laufwerk befinden.
quelle
subst
Befehl erstellten Laufwerksbuchstabens . Ein Tool weiß / kümmert sich möglicherweise nicht darum und weigert sich daher , einen Hardlink zu erstellen . Eine sehr nützliche Sache ist die Link Shell Extension , mit der der Explorer sie erstellen kann.Ein großer Unterschied ist, dass Hardlink nicht für Ordner, sondern für Dateien erstellt werden kann.
Ihre Frage sollte der Unterschied zwischen symbolischem Link oder Softlink und Verknüpfung sein .
wie demnach:
Wenn Sie auf eine Verknüpfung klicken, wird Ihr Verzeichnis in die eigentliche Datei geändert, während Soft-Link sich auf den Speicherort bezieht, als wäre es die eigentliche Datei. Unter Linux können Sie mit Terminal und CD symbolische Verknüpfungen erstellen, während Sie keine Verknüpfungen erstellen können .
Eine Windows-Verknüpfung und ein Linux-Startprogramm (die auf einen Speicherort zeigen) wären identisch.
quelle