Was ist Soft Link und Hard Link in Linux?

Ein symbolischer oder Soft Link ist ein tatsächlicher Link zur Originaldatei, während ein Hard Link eine Spiegelung der Originaldatei ist. Wenn Sie die Originaldatei löschen, hat der Softlink keinen Wert mehr, da er auf eine nicht existierende Datei verweist. Bei einem Hardlink ist es genau umgekehrt. Selbst wenn Sie die Originaldatei löschen, enthält der Hardlink immer noch die Daten der Originaldatei. Denn ein Hardlink fungiert als Spiegelung der Originaldatei.

Zusammengefasst kann ein Softlink

  • das Dateisystem durchqueren,
  • erlaubt es, zwischen Verzeichnissen zu verlinken,
  • hat eine andere Inode-Nummer und andere Dateiberechtigungen als die Originaldatei,
  • die Berechtigungen werden nicht aktualisiert,
  • erhält nur den Pfad der Originaldatei, nicht den Inhalt.

Ein Hardlink

  • kann die Grenzen des Dateisystems nicht überschreiten (d.D. h. ein Hardlink kann nur auf demselben Dateisystem funktionieren),
  • kann keine Verzeichnisse verknüpfen,
  • hat die gleiche Inode-Nummer und die gleichen Berechtigungen wie die Originaldatei,
  • die Berechtigungen werden aktualisiert, wenn wir die Berechtigungen der Quelldatei ändern,
  • hat den tatsächlichen Inhalt der Originaldatei, so dass Sie den Inhalt immer noch sehen können, auch wenn die Originaldatei verschoben oder entfernt wurde.

Sie haben es immer noch nicht verstanden? Lassen Sie mich Ihnen einige praktische Beispiele zeigen.

Softlink oder symbolischen Link erstellen

Lassen Sie uns ein leeres Verzeichnis namens „test“ erstellen.

$ mkdir test

Wechseln Sie in das Verzeichnis „test“:

$ cd test

Erstellen Sie nun eine neue Datei namens source.file mit einigen Daten, wie unten gezeigt.

$ echo "Welcome to OSTechNix" >source.file

Lassen Sie uns die Daten der source.file ansehen.

$ cat source.fileWelcome to OSTechNix

Die source.Datei wurde erstellt.

Erstellen Sie nun einen symbolischen oder Softlink zur Quelldatei.

Zu diesem Zweck führen Sie aus:

$ ln -s source.file softlink.file

Lassen Sie uns die Daten von Quelldatei und Softlink vergleichen.file.

$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix

Wie Sie in der obigen Ausgabe sehen, zeigt softlink.file die gleichen Daten wie source.file.

Lassen Sie uns die Inodes und Berechtigungen von softlink.file und source.file.

$ ls -lia

Beispielausgabe:

total 1211665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file

Wie im obigen Screenshot zu sehen ist, sind die Inode-Nummer (11665731 vs. 11665692) und die Dateiberechtigungen (lrwxrwxrwx vs. -rw-r–r–) unterschiedlich, auch wenn die softlink.Datei den gleichen Inhalt wie die Quelldatei hat, ist bewiesen, dass der Softlink nicht die gleiche Inode-Nummer und die gleichen Berechtigungen wie die Originaldatei hat.

Entfernen Sie nun die Originaldatei (d.h. source.file) und sehen Sie, was passiert.

$ rm source.file

Prüfen Sie den Inhalt der Datei softlink.file mit dem Befehl:

$ cat softlink.file

Beispielausgabe:

cat: softlink.file: No such file or directory

Wie Sie oben sehen, gibt es keine solche Datei oder kein solches Verzeichnis namens softlink.file, nachdem wir die Originaldatei (d.h. source.file) entfernt haben. Jetzt wissen wir also, dass der Softlink nur ein Link ist, der auf die Originaldatei verweist. Der Softlink ist wie eine Verknüpfung zu einer Datei. Wenn Sie die Datei entfernen, ist die Verknüpfung nutzlos.

Wie Sie bereits wissen, ist die Originaldatei immer noch verfügbar, wenn Sie den Softlink entfernen.

Vorgeschlagene Lektüre:

  • Wie man Symlinks unter Linux auflistet
  • Wie man kaputte Symlinks findet und sie unter Linux löscht

Harten Link erstellen

Erstelle eine Datei namens source.Datei mit einigen Inhalten wie unten gezeigt.

$ echo "Welcome to OSTechNix" >source.file

Lassen Sie uns den Inhalt der Datei überprüfen.

$ cat source.fileWelcome to OSTechNix

Die Datei source.file ist jetzt erstellt worden.

Jetzt erstellen wir den Hardlink zur Datei „source.file“ wie unten gezeigt.

$ ln source.file hardlink.file

Prüfen Sie den Inhalt der Datei „hardlink.file“.

$ cat hardlink.fileWelcome to OSTechNix

Sie sehen, dass die Datei „hardlink.file“ die gleichen Daten wie die Datei „source.file“ anzeigt.

Lassen Sie uns den Inode und die Berechtigungen von hardlink.file und source.file überprüfen.

$ ls -lia

Beispielausgabe:

total 1611665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 .4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file

Nun sehen wir, dass sowohl hardlink.file als auch source.file die gleiche Inode-Nummer (11665692) und Dateiberechtigungen (-rw-r–r–) haben. Damit ist bewiesen, dass die Hardlink-Datei dieselbe Inodes-Nummer und dieselben Berechtigungen wie die Originaldatei hat.

Hinweis: Wenn wir die Berechtigungen auf source.file ändern, wird dieselbe Berechtigung auch auf hardlink.file angewendet.

Nun entfernen wir die Originaldatei (d. h.e source.file) und sehen Sie, was passiert.

$ rm source.file

Prüfen Sie den Inhalt von hardlink.file mit dem Befehl:

$ cat hardlink.file

Beispielausgabe:

Wie Sie oben sehen, kann ich den Inhalt der hardlink.file sehen, auch wenn ich die Quelldatei gelöscht habe. Damit ist bewiesen, dass Hardlink dieselbe Inode-Nummer, dieselben Berechtigungen und dieselben Daten wie die Originaldatei hat.

Was ist also der Unterschied zwischen Hardlink und der normalen kopierten Datei?

Sie fragen sich vielleicht, warum wir einen Hardlink erstellen sollten, während wir die Originaldatei einfach kopieren/einfügen können? Einen Hardlink zu einer Datei zu erstellen ist etwas anderes als sie zu kopieren.

Wenn Sie eine Datei kopieren, wird nur der Inhalt dupliziert. Wenn Sie also den Inhalt einer Datei (entweder im Original oder als Hardlink) ändern, hat das keine Auswirkungen auf die andere Datei. Wenn Sie jedoch einen Hardlink zu einer Datei erstellen und den Inhalt einer der beiden Dateien ändern, wird die Änderung in beiden Dateien sichtbar.

Werfen wir einen Blick auf die Quelldatei.

$ cat source.file Welcome to OSTechNix

Die Quelldatei hat eine einzige Zeile, die besagt – Willkommen bei OSTechNix.

Fügen Sie eine neue Zeile ein, zum Beispiel „Welcome to Linux“ in source.file oder hardlink.file.

$ echo "Welcome to Linux" >>source.file

Überprüfen Sie nun den Inhalt beider Dateien.

$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux

Sehen Sie? Die Änderungen, die wir gerade in source.file vorgenommen haben, werden in beiden Dateien aktualisiert. Das bedeutet, dass beide Dateien (Quelle und Hardlink) synchronisiert werden. Alle Änderungen, die Sie in einer Datei vornehmen, werden in der anderen Datei wiedergegeben. Wenn Sie die Datei normal kopieren/einfügen, werden Sie keine neuen Änderungen in der anderen Datei sehen.

Für weitere Details lesen Sie bitte die Man Pages.

$ man ln

Das ist alles für den Moment. Ich hoffe, Sie haben eine grundlegende Vorstellung von symbolischen oder weichen Links und harten Links bekommen.

Danke fürs Vorbeischauen!

Helfen Sie uns, Ihnen zu helfen:

  • Abonnieren Sie unseren E-Mail Newsletter : Melden Sie sich jetzt an
  • Unterstützen Sie OSTechNix : Spenden Sie über PayPal
  • Laden Sie kostenlose E-Books und Videos herunter : OSTechNix auf TradePub
  • Verbinden Sie sich mit uns: Reddit | Facebook | Twitter | LinkedIn | RSS feeds

Schönen Tag noch!!!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.