Erstellen von Links in Linux

LinuxBeginner
Jetzt üben

Einführung

In Linux-Systemen bieten Links eine leistungsstarke Möglichkeit, auf Dateien und Verzeichnisse zu verweisen. Diese Links erstellen Verbindungen zwischen Dateinamen und den auf der Festplatte gespeicherten tatsächlichen Daten. Das Verständnis, wie man Links effektiv nutzt, ist eine essentielle Fähigkeit für Linux-Benutzer und Systemadministratoren.

Dieses Lab führt Sie durch die Erstellung und Nutzung von zwei Arten von Links in Linux:

  1. Hard Links: Dies sind zusätzliche Verzeichniseinträge, die auf denselben Inode (Daten auf der Festplatte) verweisen. Wenn Sie einen Hard Link erstellen, geben Sie im Wesentlichen denselben Daten einen anderen Namen.

  2. Symbolische Links (auch Soft Links genannt): Dies sind spezielle Dateien, die per Name auf andere Dateien verweisen. Im Gegensatz zu Hard Links können symbolische Links auf Verzeichnisse verweisen und sich über verschiedene Dateisysteme hinweg erstrecken.

Am Ende dieses Labs werden Sie verstehen, wie Sie beide Arten von Links mit dem Befehl ln erstellen und deren praktische Anwendungen in einer Linux-Umgebung kennen.

Erstellen eines Arbeitsverzeichnisses

In diesem Schritt werden wir eine Verzeichnisstruktur und Dateien erstellen, die wir für das Üben der Linkerstellung nutzen werden.

Zunächst überprüfen wir unseren aktuellen Speicherort, um sicherzustellen, dass wir sich im richtigen Verzeichnis befinden. Führen Sie den folgenden Befehl aus:

pwd

Als Ausgabe sollten Sie /home/labex/project sehen. Wenn Sie sich in einem anderen Verzeichnis befinden, navigieren Sie zum Projektverzeichnis:

cd /home/labex/project

Jetzt erstellen wir ein neues Verzeichnis namens linklab, in dem wir unsere Dateien speichern werden:

mkdir /home/labex/project/linklab

Navigieren wir in dieses Verzeichnis:

cd /home/labex/project/linklab

Jetzt erstellen wir zwei Textdateien, die wir für das Üben der Linkerstellung nutzen werden:

echo "This is the original file for our link examples." > original.txt

Überprüfen wir, ob unsere Datei korrekt erstellt wurde:

ls -l

Als Ausgabe sollten Sie etwas Ähnliches wie Folgendes sehen:

-rw-r--r-- 1 labex labex 46 [date and time] original.txt

Untersuchen wir auch den Inhalt der Datei:

cat original.txt

Im Terminal sollte der Text angezeigt werden, den wir zuvor eingegeben haben:

This is the original file for our link examples.

Ein Hard Link ist ein weiterer Name, der auf dieselben Daten auf der Festplatte wie die Originaldatei verweist. Sowohl die Originaldatei als auch der Hard Link teilen dieselbe Inode-Nummer, was bedeutet, dass es im Wesentlichen dieselbe Datei mit verschiedenen Namen ist.

Um einen Hard Link zu erstellen, verwenden wir den Befehl ln. Erstellen wir einen Hard Link zu unserer Datei original.txt:

ln /home/labex/project/linklab/original.txt /home/labex/project/linklab/hardlink.txt

Dieser Befehl erstellt eine neue Datei namens hardlink.txt, die ein Hard Link zu original.txt ist. Jetzt überprüfen wir, ob unser Hard Link korrekt erstellt wurde:

ls -li

Die Option -i zeigt die Inode-Nummer für jede Datei an. Sie sollten feststellen, dass original.txt und hardlink.txt dieselbe Inode-Nummer haben, was darauf hinweist, dass es sich um dieselbe Datei handelt.

Die Ausgabe sollte in etwa wie folgt aussehen:

[inode number] -rw-r--r-- 2 labex labex 46 [date and time] hardlink.txt
[inode number] -rw-r--r-- 2 labex labex 46 [date and time] original.txt

Beachten Sie, dass die Zahl 2 nach den Dateiberechtigungen die Anzahl der Hard Links angibt, die auf die Inode verweisen. Sowohl original.txt als auch hardlink.txt zeigen eine Linkzahl von 2 an, da es jetzt zwei Dateien gibt, die auf dieselben Daten verweisen.

Zeigen wir, dass die Änderung einer Datei die andere beeinflusst, da es im Wesentlichen dieselbe Datei ist:

echo "This is an added line." >> original.txt
cat hardlink.txt

Sie sollten beide Zeilen in der Ausgabe sehen:

This is the original file for our link examples.
This is an added line.

Dies bestätigt, dass Änderungen an original.txt auch in hardlink.txt sichtbar sind.

Ebenso werden Änderungen an hardlink.txt in original.txt sichtbar:

echo "Another line added through the hard link." >> hardlink.txt
cat original.txt

Die Ausgabe sollte jetzt alle drei Zeilen anzeigen:

This is the original file for our link examples.
This is an added line.
Another line added through the hard link.

Symbolische Links (auch als Soft Links oder Symlinks bekannt) unterscheiden sich von Hard Links. Ein symbolischer Link ist eine separate Datei, die einfach per Name auf eine andere Datei verweist. Er teilt nicht dieselbe Inode mit der Ziel-Datei.

Um einen symbolischen Link zu erstellen, verwenden wir den Befehl ln mit der Option -s. Erstellen wir einen symbolischen Link zu unserer Datei original.txt:

ln -s /home/labex/project/linklab/original.txt /home/labex/project/linklab/symlink.txt

Dieser Befehl erstellt eine neue Datei namens symlink.txt, die ein symbolischer Link zu original.txt ist. Jetzt überprüfen wir, ob unser symbolischer Link korrekt erstellt wurde:

ls -li

Die Ausgabe sollte in etwa wie folgt aussehen:

[inode number] -rw-r--r-- 2 labex labex  [size] [date and time] hardlink.txt
[inode number] -rw-r--r-- 2 labex labex  [size] [date and time] original.txt
[inode number] lrwxrwxrwx 1 labex labex  [size] [date and time] symlink.txt -> /home/labex/project/linklab/original.txt

Beachten Sie das l am Anfang der Berechtigungen für symlink.txt, was darauf hinweist, dass es sich um einen symbolischen Link handelt. Außerdem zeigt die Ausgabe den Pfad an, auf den der symbolische Link verweist. Sie können auch sehen, dass original.txt und symlink.txt unterschiedliche Inode-Nummern haben, was bestätigt, dass es sich um separate Dateien handelt.

Lassen Sie uns den Inhalt des symbolischen Links überprüfen:

cat symlink.txt

Sie sollten denselben Inhalt wie in original.txt sehen:

This is the original file for our link examples.
This is an added line.
Another line added through the hard link.

Fügen wir eine weitere Zeile über den symbolischen Link hinzu:

echo "This line was added through the symbolic link." >> symlink.txt
cat original.txt

Die Ausgabe sollte jetzt alle vier Zeilen enthalten:

This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
This line was added through the symbolic link.

Dies bestätigt, dass Änderungen, die über den symbolischen Link vorgenommen werden, die Ziel-Datei beeinflussen.

Jetzt sehen wir uns an, was passiert, wenn wir die Ziel-Datei löschen:

mv original.txt original.txt.bak
cat symlink.txt

Sie sollten eine Fehlermeldung wie die folgende sehen:

cat: symlink.txt: No such file or directory

Dies liegt daran, dass der symbolische Link immer noch auf /home/labex/project/linklab/original.txt verweist, das nicht mehr existiert. Dies ist ein wesentlicher Unterschied zwischen Hard Links und symbolischen Links.

Stellen wir die Originaldatei wieder her:

mv original.txt.bak original.txt
cat symlink.txt

Der symbolische Link funktioniert wieder, weil die Ziel-Datei wieder existiert.

Nachdem wir sowohl Hard Links als auch symbolische Links erstellt haben, vergleichen wir nun ihre wesentlichen Unterschiede:

Hard Links:

  1. Teilen dieselbe Inode wie die Originaldatei
  2. Können nicht auf Verzeichnisse verlinken
  3. Können keine Dateisystemgrenzen überschreiten
  4. Funktionieren weiterhin, auch wenn die Originaldatei gelöscht oder verschoben wird
  5. Änderungen am Inhalt werden in allen Hard Links widergespiegelt

Symbolische Links:

  1. Haben ihre eigene Inode, die sich von der der Ziel-Datei unterscheidet
  2. Können auf Verzeichnisse verlinken
  3. Können Dateisystemgrenzen überschreiten
  4. Werden ungültig, wenn die Ziel-Datei gelöscht oder verschoben wird
  5. Sind im Wesentlichen Zeigerdateien, die den Pfad zur Ziel-Datei enthalten

Zeigen wir einige dieser Unterschiede anhand von Beispielen:

Zunächst versuchen wir, einen Hard Link zu einem Verzeichnis zu erstellen, was nicht erlaubt ist:

mkdir testdir
ln testdir testdir_hardlink

Sie sollten eine Fehlermeldung wie die folgende sehen:

ln: testdir: hard link not allowed for directory

Jetzt versuchen wir, einen symbolischen Link zu einem Verzeichnis zu erstellen, was erlaubt ist:

ln -s testdir testdir_symlink

Überprüfen wir unseren symbolischen Verzeichnis-Link:

ls -la

Sie sollten in der Ausgabe testdir_symlink -> testdir sehen, was darauf hinweist, dass testdir_symlink ein symbolischer Link zu testdir ist.

Wir können eine Datei im Originalverzeichnis erstellen:

echo "This is a test file in the directory." > testdir/testfile.txt

Und auf sie über den symbolischen Link zugreifen:

cat testdir_symlink/testfile.txt

Sie sollten den Inhalt sehen:

This is a test file in the directory.

Dies zeigt, dass symbolische Links auf Verzeichnisse verweisen können und zur Zugriffsnahme auf deren Inhalte verwendet werden können.

Ein weiterer wichtiger Unterschied ist, dass das Löschen der Originaldatei einen symbolischen Link ungültig macht, aber nicht einen Hard Link. Wir haben dies bereits anhand unseres Beispiels für symbolische Links gesehen. Zeigen wir dies nun anhand unseres Hard Links:

rm original.txt
cat hardlink.txt

Sie sollten immer noch alle vier Zeilen sehen:

This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
This line was added through the symbolic link.

Der Hard Link funktioniert weiterhin, weil die Daten noch auf der Festplatte existieren und der Hard Link immer noch auf diese Daten verweist.

Unser symbolischer Link ist jedoch jetzt ungültig:

ls -l symlink.txt
cat symlink.txt

Sie sollten feststellen, dass symlink.txt noch existiert, aber auf eine Datei verweist, die nicht mehr existiert, und dass das Versuch, sie zu lesen, einen Fehler verursacht.

Stellen wir die Originaldatei aus unserem Hard Link wieder her:

cp hardlink.txt original.txt
cat symlink.txt

Der symbolische Link funktioniert wieder, weil die Datei, auf die er verweist, wieder existiert.

Zusammenfassung

In diesem Lab haben Sie sich mit den beiden Arten von Links in Linux vertraut gemacht: Hard Links und symbolischen Links (Soft Links). Sie haben das Erstellen dieser Links mit dem Befehl ln geübt und ihre wesentlichen Unterschiede untersucht.

Wichtige Punkte, die in diesem Lab behandelt wurden:

  1. Hard Links:

    • Werden mit dem Befehl ln ohne Optionen erstellt
    • Teilen dieselbe Inode wie die Originaldatei
    • Können nicht auf Verzeichnisse verlinken oder Dateisystemgrenzen überschreiten
    • Funktionieren weiterhin, auch wenn die Originaldatei gelöscht wird
    • Änderungen am Inhalt werden in allen Hard Links widergespiegelt
  2. Symbolische Links:

    • Werden mit dem Befehl ln -s erstellt
    • Haben ihre eigene Inode, die sich von der der Ziel-Datei unterscheidet
    • Können auf Verzeichnisse verlinken und Dateisystemgrenzen überschreiten
    • Werden ungültig, wenn die Ziel-Datei gelöscht oder verschoben wird
    • Sind Zeigerdateien, die den Pfad zur Ziel-Datei enthalten
  3. Praktische Anwendungen:

    • Links sind nützlich für das Erstellen von Verknüpfungen zu Dateien und Verzeichnissen
    • Sie können zur Verwaltung mehrerer Versionen von Dateien verwendet werden
    • Systemadministratoren nutzen Links für die Konfigurationsverwaltung
    • Links helfen bei der Organisation von Dateien ohne Datenverdoppelung

Das Verständnis, wie man Links effektiv erstellt und verwendet, ist eine essentielle Fähigkeit für Linux-Benutzer. Diese Tools ermöglichen eine effiziente Dateiverwaltung und -organisation innerhalb eines Linux-Dateisystems.