Was ist Soft Link und Hard Link unter Linux?
Ein symbolisches oder Softlink ist ein tatsächlicher Link zur Originaldatei, während ein harter Link ist eine Spiegelkopie der Originaldatei. Wenn Sie die Originaldatei löschen, hat der Softlink keinen Wert, da er auf eine nicht vorhandene Datei verweist.
Aber im Fall von Hardlink ist es genau umgekehrt. Auch wenn Sie die Originaldatei löschen, enthält der Hardlink noch die Daten der Originaldatei. Denn der Hardlink fungiert als Spiegelkopie der Originaldatei.
Kurz gesagt, ein Softlink
- kann das Dateisystem überschreiten,
- ermöglicht es Ihnen, zwischen Verzeichnissen zu verlinken,
- hat eine andere Inode-Nummer und Dateiberechtigungen als die Originaldatei,
- Berechtigungen werden nicht aktualisiert,
- hat 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),
- kann Verzeichnisse nicht verknüpfen,
- hat dieselbe Inode-Nummer und 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 immer noch anzeigen können, selbst wenn die Originaldatei verschoben oder entfernt wurde.
Immer noch nicht verstanden? Gestatten Sie mir, Ihnen einige praktische Beispiele zu zeigen.
So erstellen Sie einen Softlink oder einen symbolischen Link
Lassen Sie uns ein leeres Verzeichnis mit dem Namen "test"
erstellen .
$ mkdir test
Wechseln Sie zum "test"
Verzeichnis:
$ cd test
Erstellen Sie jetzt 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 source.file an.
$ cat source.file Welcome to OSTechNix
Nun, die source.file
wurde erstellt.
Erstellen Sie nun einen symbolischen oder weichen Link zur source.file
.
Führen Sie dazu Folgendes aus:
$ ln -s source.file softlink.file
Vergleichen wir die Daten der beiden source.file
und softlink.file
.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
Wie Sie in der obigen Ausgabe sehen, softlink.file
zeigt dieselben Daten wie source.file
an .
Lassen Sie uns die Inodes und Berechtigungen von softlink.file
überprüfen und source.file
.
$ 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
Wie wir im obigen Screenshot sehen, ist die Inode-Nummer (11665731
vs 11665692
) und Dateiberechtigungen (lrwxrwxrwx
vs -rw-r--r--
) sind anders , obwohl die softlink.file
hat denselben Inhalt wie source.file
. Daher 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, was passiert.
$ rm source.file
Prüfen Sie den Inhalt der softlink.file
mit Befehl:
$ cat softlink.file
Beispielausgabe:
cat: softlink.file: No such file or directory
Wie Sie oben sehen, gibt es keine solche Datei oder kein Verzeichnis namens softlink.file
nachdem wir die Originaldatei entfernt haben (also source.file
).
Jetzt verstehen wir also, dass 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 weiterhin verfügbar, wenn Sie den Softlink entfernen.
Empfohlene Lektüre:
- Wie man Symlinks unter Linux auflistet
- So finden Sie defekte Symlinks und löschen sie unter Linux
So erstellen Sie einen Hardlink
Erstellen Sie eine Datei namens 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 Hardlink zur source.file
erstellen wie unten gezeigt.
$ ln source.file hardlink.file
Überprüfen Sie den Inhalt von hardlink.file
:
$ cat hardlink.file Welcome to OSTechNix
Sie sehen die hardlink.file
zeigt dieselben Daten wie source.file.
Lassen Sie uns den Inode und die Berechtigungen von hardlink.file
überprüfen und source.file
.
$ 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
Jetzt sehen wir, dass sowohl hardlink.file
und source.file
dieselbe Inodes-Nummer haben (11665692
) und Dateiberechtigungen (-rw-r--r--
) . Daher ist bewiesen, dass die Hardlink-Datei die gleiche Inodes-Nummer und Berechtigungen wie die Originaldatei hat.
Vorsicht: Wenn wir die Berechtigungen für source.file
ändern , wird die gleiche Berechtigung auf die hardlink.file
angewendet auch.
Entfernen Sie nun die Originaldatei (d. h. source.file
) und sehen, was passiert.
$ rm source.file
Überprüfen Sie den Inhalt von hardlink.file
mit Befehl:
$ cat hardlink.file
Beispielausgabe:
Wie Sie oben sehen, kann ich den Inhalt der hardlink.file
anzeigen, selbst wenn ich die Quelldatei gelöscht habe . Somit ist bewiesen, dass Hardlink die gleiche Inode-Nummer, die Berechtigungen und Daten der Originaldatei teilt.
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 nur der Inhalt dupliziert. Wenn Sie also den Inhalt einer Datei ändern (entweder Original oder Hardlink), 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 angezeigt.
Werfen wir einen Blick auf die source.file.
$ cat source.file Welcome to OSTechNix
Die Quelldatei hat eine einzelne Zeile, die besagt - Willkommen bei OSTechNix.
Fügen Sie in source.file
eine neue Zeile an, zum Beispiel "Welcome to Linux". 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
Sehen? Die Änderungen, die wir gerade an source.file
vorgenommen haben werden in beiden Dateien aktualisiert. Bedeutung - beide Dateien (Quelle und fester Link) werden synchronisiert.
Alle Änderungen, die Sie in einer Datei vornehmen, werden in einer anderen widergespiegelt. Wenn Sie die Datei normalerweise kopieren/einfügen, werden Sie keine neuen Änderungen in anderen Dateien sehen.
Weitere Einzelheiten finden Sie in den Manpages.
$ man ln
Schlussfolgerung
In diesem Handbuch haben wir besprochen, was Softlink und Hardlink in Linux sind, wie man Softlink und Hardlink mit Beispielbefehlen erstellt, und schließlich haben wir den Unterschied zwischen Hardlink und normal kopierter Datei erklärt.
Ich hoffe, Sie haben eine grundlegende Vorstellung davon, wie man symbolische oder weiche Links und harte Links unter Linux verwendet.