Unix: Softlinks, Hardlinks

656
sixtyfootersdude

Ich bin etwas verwirrt, was die Unterschiede zwischen einem Softlink und einem Hardlink (auf Unix) sind.

Anscheinend ist ein Softlink das Gleiche wie eine Verknüpfung in Windows oder ein Alias ​​unter Mac OS X. (Kann jemand das bestätigen?) Softlinks können sowohl auf Verzeichnisse als auch auf Dateien verweisen.

Ich bin mir nicht sicher, was ein Hardlink macht oder ob er nützlich ist.

Ist es besser, eines anstelle des anderen zu verwenden?

Vielen Dank.

4
Dies wurde möglicherweise zuvor auf Super User durchgeführt. Ich weiß, dass dies auf Server Fault erfolgt: http://serverfault.com/questions/10543/what-is-the-difference-between-a-soft-symbolic-link-and-und a-Hardlink. Übrigens - Ein Mac OS-Alias ​​ist ein komplizierteres Tier als ein Symlink, was ziemlich einfach ist. Ich weiß nichts über Fenster. dmckee vor 14 Jahren 1

1 Antwort auf die Frage

4
Sunny

Hardlinks können nur auf demselben Dateisystem funktionieren. Sie sind grundsätzlich unterschiedliche Namen für eine und dieselbe Datengruppe (Datei). Wenn Sie also eine feste Verknüpfung zu einer Datei erstellen und dann die ursprüngliche Datei löschen, bleibt die Verknüpfung bestehen und die Daten sind über die feste Verknüpfung zugänglich. Der Speicherplatz wird freigegeben, wenn der letzte Hardlink gelöscht wird. Tatsächlich gibt es keinen Unterschied zwischen der Originaldatei und dem später erstellten Hardlink. Sie sind austauschbar. Nachdem Sie einen Hardlink erstellt haben, gibt es kein "Original" und "Link" mehr.

Softlinks können zwischen verschiedenen Dateisystemen verwendet werden, dh in Dateisystem2 kann ein Link erstellt werden, um eine Verknüpfung zu einer Datei / einem Verzeichnis im Dateisystem1 herzustellen. Wenn Sie das Original entfernen, wird der Link unterbrochen, da er auf eine nicht definierte Position verweist.

Ja, Sie können sich Softlinks als "Shorcuts" in Windows vorstellen, aber sie sind nicht genau gleich. Die Verknüpfung in Windows ist eine Datei für sich . Wenn ein Programm sie nicht interpretieren kann, kann es sie nicht verwenden.

Hier ist ein schön abgebildeter Artikel zum Thema :)

Tolle Antwort! Danke für die Links. Das Bild ist besonders hilfreich. sixtyfootersdude vor 14 Jahren 0
Soft-Links in Unix-ähnlichen Systemen sind ebenfalls unabhängige Dateien (sie nehmen einen Inode in Anspruch, sie können fest miteinander verbunden sein usw.) und erfordern auch Interferenz (obwohl das Betriebssystem dazu eine API bietet). dmckee vor 14 Jahren 0
dmckee: Symlinks * werden vom Betriebssystem * beim Öffnen oder `stat ()` interpretiert. grawity vor 14 Jahren 0