Frage Was ist der Unterschied zwischen einem weichen (symbolischen) Link und einem harten Link?


Ich habe gehört, dass du es jetzt kannst Erstellen Sie auch weiche Links in Vista. Was ist der Unterschied zwischen einem weichen (symbolischen) Link und einem festen Link unter UNIX / Linux / Vista?

Gibt es Vorteile, einen über den anderen zu verwenden? Oder dienen sie nur zwei verschiedenen Zwecken?


55
2018-05-20 20:58


Ursprung


In der Praxis lautet die Antwort, dass Sie fast immer einen symbolischen Link verwenden möchten. Mein Verständnis ist, dass harte Links hauptsächlich zum Speichern von Speicherplatz dienen, insbesondere in Dingen wie Snapshots und inkrementellen Backups, bei denen aufeinanderfolgende Snapshots viele identische Dateien enthalten, die sich in der Zukunft kaum ändern werden. - Ryan Thompson
Soll dies nach Unix & Linux migriert werden? Sehen unix.stackexchange.com/questions/9575/ ... - ripper234
Nein, es sollte nicht migriert werden. Da die ursprüngliche Frage nicht nur für Unix gilt, unterstützt Windows harte und weiche Links. - Richard West
einige Anwendungen werden (und manchmal auch schlecht) durch die Verwendung einer weichen Verbindung unterbrochen - insbesondere bei Verzeichnissen: Der Softlink wird dereferenziert, und wenn dies der Fall ist und die Anwendung vergleicht, sagen wir /var/opt/log/appname (seine Konfiguration) mit dem dereferenzierten Wert, sagen wir /apps/appname/logsEs wird sich beschweren, dass es kein Match ist. Die Lösung dafür ist die Verwendung eines mount --bind (unter Linux), um das ursprüngliche Verzeichnis an den neuen Speicherort neu zu mounten. - warren
Nur um ein paar Punkte in anderen Antworten zu klären ... Windows kann Hardlinks machen (obwohl ich glaube, dass sie sich etwas anders verhalten als in Unix). Sehen Sie sich den Befehl mklink und das Argument h an. (Wenn Sie mklink in die Befehlszeile eingeben, sehen Sie die Hilfedatei, die die grundlegende Syntax enthält.)


Antworten:


Eine feste Verbindung teilt üblicherweise die gleichen Dateisystemstrukturen (inode in unixspeak), während eine weiche Verbindung eine Pfadnamenumleitung ist.

  • Hardlinks müssen sich auf demselben Dateisystem befinden, Softlinks können Dateisysteme durchqueren.
  • Hardlinked-Dateien bleiben verbunden, selbst wenn Sie einen von ihnen verschieben (es sei denn, Sie verschieben einen zu einem anderen Dateisystem, wodurch der Kopier- und Löschmechanismus ausgelöst wird). Softlink-Dateien brechen, wenn Sie das Ziel (Original) verschieben, und manchmal, wenn Sie den Link verschieben (Haben Sie einen absoluten oder relativen Pfad verwendet? Ist er immer noch gültig?).
  • Hardlinked-Dateien sind gleichwertig, während das Original in Softlinks speziell ist und das Löschen des Originals die Daten löscht. Die Daten verschwinden erst wieder alles Hardlinks werden gelöscht.
  • Softlinks können auf zeigen irgendein Ziel, aber die meisten Betriebssysteme / Dateisysteme verbieten das Verknüpfen von Verzeichnissen, um Zyklen im Dateisystemgraph zu verhindern (mit Ausnahme der . und .. Einträge in Unix-Verzeichnissen, die feste Links sind).
  • Softlinks können spezielle Unterstützung von Dateisystem-Walking-Tools erfordern. Lesen Sie weiter LeseLink (2).

(Einige Details erinnern an Mattierung. Vielen Dank.)


66
2018-05-20 21:12



Schöne Zusammenfassung. Jeder Linux-Benutzer sollte dies wissen (obwohl harte Links sehr ungewöhnlich sind). - Artem Russakovskii
Dmckees Antwort hat die Details über die Semantik ziemlich genau. Das einzige Detail, das ich hinzufügen möchte, ist eine Erklärung dessen, was auf einer höheren Ebene passiert: Eine weiche Verbindung ist eine Datei für sich selbst, während eine feste Verbindung ein Verzeichniseintrag ist, der auf existierende Daten zeigt. Wikipedia hat mehr Details über schwer und weich Links. - Mr. Shiny and New 安宇
schöne Zusammenfassung, sehr nützlich - Razique
Es sollte auch beachtet werden, dass Hardlinks sowohl Berechtigungen als auch Eigentumsinformationen teilen. - Corey S.
Bitte fügen Sie hinzu, dass 2 Hardlinks automatisch mit dem Namen erstellt werden. und .. jedes Mal, wenn Sie einen Ordner erstellen. In Linux sind das die einzigen gültigen Hardlinks zu einem Ordner. - Mircea Vutcovici


Die Zusammenfassung besteht darin, dass eine symbolische / kurze Verknüpfung als eine Verknüpfung zum Speicherort der ersten Datei fungiert, während eine feste Verknüpfung eine Verknüpfung zu der Datei auf der Festplatte darstellt.

Wenn Sie das Ziel eines Softlinks löschen, wird der Softlink nicht mehr funktionieren. Wenn Sie jedoch eine Kopie eines Hardlinks löschen, verbleibt die Datei auf dem Datenträger, bis alle festen Links entfernt wurden. Tatsächlich sind alle Dateinamen Hardlinks zu der Datei auf der Festplatte.

Es gibt auch bestimmte Einschränkungen, zB glaube ich nicht, dass Sie feste Verknüpfungen von Ordnern erstellen können, aber Sie können weiche Verknüpfungen von ihnen erstellen. Softlinks können auch auf Dateien / Ordner auf verschiedenen Laufwerken und Partitionen verweisen, während dies bei Hardlinks nicht möglich ist.


10
2018-05-20 21:12





Das MS Windows-System verwendet immer weiche Verknüpfungen (Verknüpfungen). Das heißt, der Link fungiert lediglich als eine Verknüpfung zum Speicherort der Datei. Wenn der Speicherort des Originals verschoben wird, wird die Verknüpfung unterbrochen. Darüber hinaus hat das, was Sie mit der Verknüpfung tun (z. B. Berechtigungen ändern oder den Namen der Verknüpfung ändern) keine Auswirkungen auf die eigentliche Datei.

Also begann die Frage mit einer falschen Annahme. Ja, Vista verwendet Softlinks, aber es ist nicht neu, das ist eine MS-Verknüpfung.


-1
2018-04-18 18:20



Nein, NTFS unterstützt Hardlinks und hat seit NTFS 3.1 (die aktuelle Version seit XP / 2003). - Chris S