1031 Stimmen

Was ist der Unterschied zwischen einem symbolischen Link und einem Festplatten-Link?

Vor kurzem wurde ich während eines Vorstellungsgesprächs danach gefragt. Ich war ehrlich und sagte, dass ich wusste, wie sich ein symbolischer Link verhält und wie man einen erstellt, aber ich verstehe nicht den Einsatz eines Hardlinks und wie er sich von einem symbolischen unterscheidet.

4 Stimmen

Über 'do not understand the use of a hard link' kann es in Build-Systemen verwendet werden, die viele Binärdateien kopieren. Das Erstellen eines Hardlinks anstelle einer tatsächlichen Kopie beschleunigt die Dinge. MSBuild 4.0 unterstützt dies.

20 Stimmen

Ich finde diesen Link sehr nützlich, um es zu verstehen. askubuntu.com/questions/108771/…

3 Stimmen

unix.stackexchange hat eine gute Liste von Aufzählungspunkten... sehr hilfreich, da sie alle Einschränkungen sehr prägnant darstellt und leicht zu überfliegen ist. (viele dieser Aufzählungspunkte behandeln Randfälle/Haken, die nur in den Kommentaren zu dieser Frage erwähnt werden... oder überhaupt nicht erwähnt werden)

47voto

Soft-Link:

Soft oder symbolisch ist eher eine Verknüpfung zur Originaldatei....wenn du das Original löschst, schlägt die Verknüpfung fehl und wenn du nur die Verknüpfung löschst, passiert nichts mit dem Original.

Soft-Link-Syntax: ln -s Pfad_zur_Zieldatei Verknüpfung

Ausgabe: Verknüpfung -> ./Zieldatei

Beweis: readlink Verknüpfung Auch in der Ausgabe von ls -l Verknüpfung siehst du den ersten Buchstaben in lrwxrwxrwx als l, was darauf hinweist, dass die Datei eine symbolische Verknüpfung ist.

Löschen der Verknüpfung: unlink Verknüpfung

Hinweis: Wenn du möchtest, dass deine symbolische Verknüpfung auch nach dem Verschieben funktioniert, gib unbedingt den absoluten Pfad an und nicht den relativen Pfad beim Erstellen einer symbolischen Verknüpfung. z.B. (beginnend von /root/benutzer/Zieldatei und nicht ./Zieldatei)

Hard-Link:

Hard-Link ist mehr eine Spiegelkopie oder mehrere Pfade zur selben Datei. Mach etwas mit Datei1 und es erscheint in Datei 2. Das Löschen einer Datei lässt die andere weiterhin bestehen.

Der Inode (oder die Datei) wird nur gelöscht, wenn alle (hard)Links oder alle Pfade zum (selben Datei)inode gelöscht wurden.

Wenn einmal ein Hard-Link erstellt wurde, hat die Verknüpfung den Inode der Originaldatei. Das Löschen, Umbenennen oder Verschieben der Originaldatei beeinträchtigt den Hard-Link nicht, da er mit dem zugrunde liegenden Inode verknüpft ist. Alle Änderungen an den Daten im Inode spiegeln sich in allen Dateien wider, die sich auf diesen Inode beziehen.

Hard-Link-Syntax: ln Zieldatei Verknüpfung

Ausgabe: Eine Datei mit dem Namen Verknüpfung wird erstellt, mit derselben Inode-Nummer wie die Zieldatei.

Beweis: ls -i Verknüpfung Zielfile (überprüfe ihre Inodes)

Löschen der Verknüpfung: rm -f Verknüpfung (Lösche die Verknüpfung wie eine normale Datei)

Hinweis: Symbolische Verknüpfungen können Dateisysteme überspannen, da sie einfach der Name einer anderen Datei sind. Während Hard-Links nur innerhalb desselben Dateisystems gültig sind.

Symbolische Verknüpfungen haben einige Funktionen, die Hard-Links fehlen:

  • Hard-Links verweisen auf den Dateiinhalt. Während Symbolische Verknüpfungen auf den Dateinamen verweisen.

  • Die Größe eines Hard-Links entspricht der Größe des Inhalts, während eine Symbolische Verknüpfung die Größe des Dateinamens hat.

  • Hard-Links teilen denselben Inode. Symbolische Verknüpfungen nicht.

  • Hard-Links können nicht über Dateisysteme hinweg verweisen. Symbolische Verknüpfungen schon.

  • Du weißt sofort, auf was eine symbolische Verknüpfung zeigt, während du bei Hard-Links das gesamte Dateisystem durchsuchen musst, um Dateien zu finden, die denselben Inode teilen.

    # find / -inum 517333

    /home/bobbin/sync.sh
    /root/synchro
  • Hard-Links können nicht auf Verzeichnisse verweisen.

Die Hard-Links haben zwei Einschränkungen:

  • Verzeichnisse können nicht hard verknüpft werden. Linux erlaubt dies nicht, um die zyklische Baumstruktur von Verzeichnissen aufrechtzuerhalten.
  • Ein Hard-Link kann nicht über Dateisysteme hinweg erstellt werden. Beide Dateien müssen sich auf demselben Dateisystem befinden, da verschiedene Dateisysteme unterschiedliche unabhängige Inode-Tabellen haben (zwei Dateien auf verschiedenen Dateisystemen, aber mit derselben Inode-Nummer, sind unterschiedlich).

33voto

nobody Punkte 19383

Symbolische Links verweisen auf einen Pfadnamen. Dies kann sich überall im Dateisystem eines Systems befinden und muss nicht einmal existieren, wenn der Link erstellt wird. Der Ziel-Pfad kann relativ oder absolut sein.

Hard Links sind zusätzliche Zeiger auf einen Inode, was bedeutet, dass sie nur auf demselben Volume wie das Ziel existieren können. Zusätzliche Hard Links zu einer Datei sind nicht vom "ursprünglichen" Namen zu unterscheiden, der zum Referenzieren einer Datei verwendet wird.

23voto

Jauder Ho Punkte 1335

Ich würde dich auf Wikipedia verweisen:

Ein paar Punkte:

  • Symlinks können im Gegensatz zu Hardlinks Dateisysteme überschreiten (meistens).
  • Symlinks können auf Verzeichnisse verweisen.
  • Hardlinks verweisen auf eine Datei und ermöglichen es, auf dieselbe Datei mit mehr als einem Namen zu verweisen.
  • Solange es mindestens einen Link gibt, sind die Daten weiterhin verfügbar.

11voto

PGOEL Punkte 536

Hard link vs Soft link

Hard Link vs Soft Link lässt sich leicht anhand dieses Bildes erklären.

9voto

JesperE Punkte 61161

Hardlinks sind sehr nützlich beim Durchführen inkrementeller Backups. Siehe rsnapshot, zum Beispiel. Die Idee ist, eine Kopie mit Hardlinks zu erstellen:

  • Kopiere Backup Nummer n zu n + 1
  • Kopiere Backup n - 1 zu n
  • ...
  • Kopiere Backup 0 zu Backup 1
  • Aktualisiere Backup 0 mit allen geänderten Dateien.

Das neue Backup wird keinen zusätzlichen Speicherplatz einnehmen, abgesehen von den Änderungen, die Sie vorgenommen haben, da alle inkrementellen Backups auf den gleichen Inodes für Dateien verweisen, die sich nicht geändert haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X