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.