Website-Suche

Erklären von Softlink und Hardlink unter Linux anhand von Beispielen


Symbolischer Link und Hardlink anhand von Beispielen erklärt

Was ist Softlink und Hardlink unter Linux?

Ein symbolischer oder Softlink ist ein tatsächlicher Link zur Originaldatei, während ein Hardlink eine Spiegelkopie der Originaldatei ist. Wenn Sie die Originaldatei löschen, hat der Softlink keinen Wert, da er auf eine nicht vorhandene Datei verweist.

Aber im Fall von Hardlinks ist es genau das Gegenteil. Selbst wenn Sie die Originaldatei löschen, enthält der Hardlink weiterhin die Daten der Originaldatei. Denn der Hardlink fungiert als Spiegelkopie der Originaldatei.

Kurz gesagt, ein Softlink

  • kann das Dateisystem durchqueren,
  • ermöglicht die Verknüpfung zwischen Verzeichnissen,
  • hat eine andere Inode-Nummer und Dateiberechtigungen als die Originaldatei,
  • Berechtigungen werden nicht aktualisiert,
  • enthält nur den Pfad der Originaldatei, nicht den Inhalt.

Ein harter Link

  • kann die Dateisystemgrenzen nicht überschreiten (d. h. ein Hardlink kann nur auf demselben Dateisystem funktionieren),
  • Verzeichnisse können nicht verlinkt werden,
  • hat die gleiche Inode-Nummer und die gleichen Berechtigungen wie die Originaldatei,
  • Berechtigungen werden aktualisiert, wenn wir die Berechtigungen der Quelldatei ändern.
  • enthält den tatsächlichen Inhalt der Originaldatei, sodass Sie den Inhalt auch dann noch anzeigen können, wenn die Originaldatei verschoben oder entfernt wurde.

Verstehst du es immer noch nicht? Nun, erlauben Sie mir, Ihnen einige praktische Beispiele zu zeigen.

So erstellen Sie einen Softlink oder einen symbolischen Link

Erstellen wir ein leeres Verzeichnis mit dem Namen "test".

mkdir test

Wechseln Sie in das Verzeichnis "test":

cd test

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

echo "Welcome to OSTechNix" >source.file

Sehen wir uns die Daten der Quelldatei an.

$ cat source.file
Welcome to OSTechNix

Nun, die source.file wurde erstellt.

Erstellen Sie nun einen symbolischen oder Softlink zur source.file.

Führen Sie dazu Folgendes aus:

ln -s source.file softlink.file

Vergleichen wir die Daten von source.file und softlink.file.

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

Symlink-Daten anzeigen

Wie Sie in der obigen Ausgabe sehen können, zeigt softlink.file dieselben Daten an wie source.file.

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

ls -lia

Beispielausgabe:

total 12
11665675 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.file
11665692 -rw-rw-r--  1 sk sk   21 Oct 17 11:39 source.file

Überprüfen Sie die Inodes und Berechtigungen des symbolischen Links

Wie wir im obigen Screenshot sehen, sind die Inode-Nummer (11665731 vs. 11665692) und die Dateiberechtigungen (lrwxrwxrwx vs -rw-r--r--) sind anders, obwohl die softlink.file denselben Inhalt hat wie source.file. Somit ist bewiesen, dass Softlinks nicht dieselbe Inode-Nummer und dieselben Berechtigungen wie die Originaldatei haben.

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

rm source.file

Überprüfen Sie den Inhalt der softlink.file mit dem folgenden Befehl:

cat softlink.file

Beispielausgabe:

cat: softlink.file: No such file or directory

Überprüfen Sie den Inhalt symbolischer Links

Wie Sie oben sehen, gibt es keine solche Datei oder kein Verzeichnis namens softlink.file, nachdem wir die Originaldatei (d. h. source.file) entfernt haben.

Jetzt verstehen wir also, dass ein 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, bleibt die Originaldatei weiterhin verfügbar, wenn Sie den Softlink entfernen.

Empfohlene Lektüre:

  • So listen Sie Symlinks unter Linux auf
  • So finden Sie defekte Symlinks und löschen sie unter Linux

So erstellen Sie einen Hardlink

Erstellen Sie eine Datei mit dem Namen source.file mit einigen Inhalten, wie unten gezeigt.

echo "Welcome to OSTechNix" >source.file

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

$ cat source.file
Welcome to OSTechNix

Die source.file wurde jetzt erstellt.

Lassen Sie uns nun den festen Link zur source.file erstellen, wie unten gezeigt.

ln source.file hardlink.file

Erstellen Sie einen harten Link

Überprüfen Sie den Inhalt von hardlink.file:

$ cat hardlink.file
Welcome to OSTechNix

Sie sehen, dass die hardlink.file dieselben Daten wie die source.file anzeigt.

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

ls -lia

Beispielausgabe:

total 16
11665675 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.file
11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file

Überprüfen Sie die Inodes und Berechtigungen des Hardlinks

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

Hinweis: Wenn wir die Berechtigungen für source.file ändern, wird die gleiche Berechtigung auch für hardlink.file angewendet.

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

rm source.file

Überprüfen Sie den Inhalt von hardlink.file mit folgendem Befehl:

cat hardlink.file

Beispielausgabe:

Überprüfen Sie den Inhalt der Hardlinks

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

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

Sie fragen sich vielleicht, warum wir einen festen Link erstellen sollten, während wir die Originaldatei einfach kopieren/einfügen können? Das Erstellen eines festen Links zu einer Datei unterscheidet sich vom Kopieren.

Wenn Sie eine Datei kopieren, wird lediglich der Inhalt dupliziert. Wenn Sie also den Inhalt einer Datei (entweder Original oder Hardlink) ändern, hat dies keine Auswirkungen auf die andere.

Wenn Sie jedoch einen festen Link zu einer Datei erstellen und den Inhalt einer der Dateien ändern, wird die Änderung in beiden Dateien angezeigt.

Werfen wir einen Blick auf die Quelldatei.

$ cat source.file 
Welcome to OSTechNix

Die Quelldatei enthält eine einzelne Zeile mit der Aufschrift „Willkommen bei OSTechNix“.

Fügen Sie eine neue Zeile hinzu, 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 OSTechNix
Welcome to Linux
$ cat source.file 
Welcome to OSTechNix
Welcome to Linux

Inhalt des Hardlinks aktualisieren

Sehen? Die Änderungen, die wir gerade an source.file vorgenommen haben, werden in beiden Dateien aktualisiert. Bedeutung – beide Dateien (Quelle und Hardlink) werden synchronisiert.

Alle Änderungen, die Sie in einer Datei vornehmen, werden auf die andere übertragen. Wenn Sie die Datei normalerweise kopieren/einfügen, werden Sie in anderen Dateien keine neuen Änderungen sehen.

Weitere Informationen finden Sie in den Manpages.

man ln

Abschluss

In diesem Handbuch haben wir besprochen, was unter Linux Softlink und Hardlink ist, wie man Softlink und Hardlink anhand von Beispielbefehlen erstellt und schließlich den Unterschied zwischen Hardlink und normal kopierter Datei erklärt.

Ich hoffe, Sie haben eine grundlegende Vorstellung davon, wie man symbolische oder Soft-Links und Hard-Links unter Linux verwendet.

Verwandte Artikel