Symbolische und Hardlinks anlegen und ändern

In Linux sind Links ein leistungsfähiges Werkzeug, um Dateien und Verzeichnisse effizient zu verwalten. Sie ermöglichen es, mehrere Dateieinträge auf dieselben Daten zu verweisen, was sowohl Speicher spart als auch die Verwaltung von Dateien erleichtert. In diesem Blog-Beitrag erklären wir den Unterschied zwischen symbolischen (auch Softlinks genannt) und Hardlinks, wie man sie erstellt und verwaltet.

Was sind Links?

Ein Link ist im Grunde ein Verweis auf eine Datei oder ein Verzeichnis. Es gibt zwei Hauptarten von Links in Linux:

  1. Symbolische Links (Softlinks): Diese sind ähnlich wie Verknüpfungen in Windows. Sie zeigen auf den Pfad einer Datei oder eines Verzeichnisses, d.h. sie enthalten einen Zeiger auf den Dateinamen einer anderen Datei. Wenn die Datei oder das Verzeichnis, auf das der symbolische Link verweist, gelöscht oder verschoben wird, wird der symbolische Link „gebrochen“ und zeigt ins Leere.
  2. Hardlinks: Ein Hardlink ist ein zusätzlicher Dateieintrag, der direkt auf die gleichen Datenblöcke im Dateisystem verweist wie das Original. Im Gegensatz zu symbolischen Links sind Hardlinks immer mit den Daten verbunden, auch wenn der ursprüngliche Dateiname gelöscht oder verschoben wird. Es gibt also keinen „gebrochenen“ Link.

Unterschiede zwischen Symbolischen Links und Hardlinks

EigenschaftSymbolische Links (Softlinks)Hardlinks
Zeigt aufDateiname / PfadDie eigentlichen Datenblöcke
VerzeichnisunterstützungJaNein (kann keine Verzeichnisse verlinken)
Über DateisystemgrenzenJaNein (nur innerhalb desselben Dateisystems)
Link bricht, wenn Original gelöscht wirdJaNein, beide Dateien bleiben funktionsfähig
Verwendung für VerzeichnisseHäufigNicht unterstützt

Symbolische Links erstellen

Symbolische Links werden mit dem Befehl ln -s erstellt. Die Syntax lautet:

ln -s [Ziel] [Linkname]

Beispiel:

Sie haben eine Datei original.txt und möchten einen symbolischen Link mit dem Namen link.txt erstellen:

ln -s original.txt link.txt

Jetzt ist link.txt ein symbolischer Link, der auf original.txt zeigt. Änderungen, die an link.txt vorgenommen werden, wirken sich direkt auf original.txt aus, da sie dieselben Daten referenzieren. Wenn Sie jedoch original.txt löschen, wird der symbolische Link gebrochen und verweist ins Leere.

Symbolische Links für Verzeichnisse:

Symbolische Links können auch für Verzeichnisse verwendet werden. Wenn Sie beispielsweise einen symbolischen Link zu einem Verzeichnis erstellen möchten, verwenden Sie dieselbe Syntax:

ln -s /pfad/zum/verzeichnis linkname

Hardlinks erstellen

Hardlinks werden ebenfalls mit dem Befehl ln erstellt, jedoch ohne die Option -s. Die Syntax lautet:

ln [Ziel] [Linkname]

Beispiel:

Sie haben eine Datei original.txt und möchten einen Hardlink mit dem Namen link.txt erstellen:

ln original.txt link.txt

Nun gibt es zwei Dateinamen (original.txt und link.txt), die beide auf dieselben Datenblöcke verweisen. Wenn Sie original.txt löschen, bleibt link.txt vollständig funktionsfähig, da die Datenblöcke nicht gelöscht werden, solange noch mindestens ein Hardlink vorhanden ist.

Wichtige Eigenschaften von Hardlinks:

  • Dateiinformationen teilen: Hardlinks sind auf die gleichen Inode (eine interne Kennung des Dateisystems für Dateien) wie das Original verknüpft. Beide Dateien haben denselben Inhalt, denselben Änderungszeitpunkt und dieselbe Dateigröße.
  • Speicherplatz sparen: Da Hardlinks nur ein weiterer Verweis auf dieselben Daten sind, wird kein zusätzlicher Speicherplatz für die Daten selbst belegt.
  • Verhindern von Datenverlust: Selbst wenn das Original gelöscht wird, bleiben die Daten durch den Hardlink erhalten, solange mindestens ein Hardlink existiert.

Änderungen an Links vornehmen

Symbolische Links bearbeiten

Wenn Sie einen symbolischen Link verschieben oder umbenennen möchten, können Sie einfach den Befehl mv verwenden:

mv alter_link neuer_link

Wenn der symbolische Link gebrochen ist (weil das Original gelöscht wurde), können Sie ihn entweder entfernen oder neu erstellen.

Um einen symbolischen Link zu löschen, verwenden Sie den Befehl rm:

rm linkname

Hardlinks bearbeiten

Hardlinks werden wie normale Dateien behandelt. Da ein Hardlink nur ein weiterer Dateiname für dieselben Daten ist, können Sie den Hardlink mit mv umbenennen oder mit rm löschen, ohne die Daten zu verlieren, solange noch mindestens ein weiterer Hardlink vorhanden ist.

Um zu sehen, wie viele Hardlinks auf eine Datei verweisen, verwenden Sie den Befehl ls -l. Die zweite Spalte zeigt die Anzahl der Hardlinks:

ls -l

Beispiel:

Wenn Sie eine Datei mit mehreren Hardlinks haben und einen der Links löschen, bleiben die Daten bestehen, solange ein weiterer Hardlink existiert.

rm link.txt

Wann sollten Sie symbolische und wann Hardlinks verwenden?

  • Verwenden Sie symbolische Links, wenn Sie:
    • Dateien oder Verzeichnisse aus verschiedenen Dateisystemen verlinken möchten.
    • Einen flexiblen Verweis auf eine Datei oder ein Verzeichnis benötigen, der auch dann funktioniert, wenn das Original verschoben wird.
    • Ein Verzeichnis verlinken möchten (Hardlinks können keine Verzeichnisse verlinken).
  • Verwenden Sie Hardlinks, wenn Sie:
    • Speicherplatz sparen möchten, indem Sie mehrere Dateinamen für dieselben Daten nutzen.
    • Sicherstellen möchten, dass die Datei nicht gelöscht wird, solange noch mindestens ein Link darauf verweist.

Zusammenfassung

Symbolische und Hardlinks sind nützliche Werkzeuge, um die Dateiverwaltung in Linux zu vereinfachen. Während symbolische Links auf den Pfad einer Datei oder eines Verzeichnisses verweisen und flexibler sind, bieten Hardlinks eine direktere Verbindung zu den eigentlichen Datenblöcken und gewährleisten, dass die Daten nicht gelöscht werden, solange ein Hardlink besteht.

Beide Arten von Links haben ihre eigenen Stärken und eignen sich für unterschiedliche Anwendungsfälle. Das Wissen, wann und wie man sie verwendet, kann Ihnen helfen, Ihr Dateisystem effizienter zu organisieren.

Beispiele:

  • Symbolischen Link erstellen:
ln -s /pfad/zur/datei linkname
  • Hardlink erstellen:
ln original.txt hardlink.txt

Nun können Sie auf Ihrem Linux-System effektiv mit symbolischen und Hardlinks arbeiten!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert