Was ist ein symbolischer Link?
Ein symbolischer Link, auch bekannt als Softlink, ist eine spezielle Datei im Unix-basierten Betriebssystem wie Linux, die auf eine andere Datei, ein Verzeichnis oder eine Ressource im System verweist. Es ist ein Verknüpfungstyp, der es dir ermöglicht, indirekt auf den Zielpfad zuzugreifen.
Wie funktioniert ein symbolischer Link?
Wenn du einen symbolischen Link erstellst, schreibst du im Wesentlichen den Pfad zum Ziel in eine neue Datei. Diese neue Datei wird als symbolischer Link bezeichnet und befindet sich im selben Verzeichnis wie die ursprüngliche Datei.
Lorsque tu accèdes au lien symbolique, le système d’exploitation redirige ton accès vers le fichier, le répertoire ou la ressource cible. Cela signifie que toute opération que tu effectues sur le lien symbolique, comme l’ouverture, la lecture ou l’écriture, est en réalité effectuée sur la cible.
Vorteile der Verwendung symbolischer Links
Die Verwendung symbolischer Links bietet mehrere Vorteile:
- Flexibilität: Du kannst symbolische Links erstellen, um auf Ressourcen zu verweisen, selbst wenn sie sich auf einem anderen Dateisystem befinden.
- Vereinfachtes Dateimanagement: Anstelle von redundanten Kopien von Dateien kannst du symbolische Links erstellen, um auf dieselben Dateien aus verschiedenen Verzeichnissen zuzugreifen.
- Portabilität: Symbolische Links können leicht auf andere Systeme verschoben oder kopiert werden, solange der Zielpfad noch existiert.
Unterschiede zwischen symbolischen Links und Hardlinks
Was ist ein Hardlink?
Ein Hardlink ist eine direkte Verbindung zwischen zwei Dateien auf demselben Dateisystem. Er erstellt keinen neuen Eintrag in der Dateistruktur. Stattdessen verweist er auf dieselbe Metadatencode, die auch für die Originaldatei verwendet wird.
Eigenschaften von Hardlinks
Hardlinks haben folgende Eigenschaften:
- Sie verweisen immer auf Dateien auf demselben Dateisystem.
- Sie können nur für Dateien erstellt werden, nicht für Verzeichnisse.
- Sie haben dieselbe Inode-Nummer wie die Originaldatei, was bedeutet, dass sie zwei Namen für dieselbe Datei aufweisen.
- Sie können nicht über Dateisystemgrenzen hinweg erstellt werden.
Was ist ein symbolischer Link?
Ein symbolischer Link ist im Gegensatz zu einem Hardlink eine Textdatei, die auf eine andere Datei oder ein anderes Verzeichnis verweist. Dieser Verweis kann sowohl innerhalb als auch außerhalb des aktuellen Dateisystems liegen.
Eigenschaften von symbolischen Links
Symbolische Links haben folgende Eigenschaften:
- Sie können auf Dateien oder Verzeichnisse verweisen.
- Sie können über Dateisystemgrenzen hinweg erstellt werden.
- Sie haben eine eigene Inode-Nummer und eine eigene Textspeichergröße.
- Sie werden aufgelöst, wenn du versuchst, auf sie zuzugreifen.
Wichtige Unterschiede
Merkmal | Hardlink | Symbolischer Link |
---|---|---|
Art der Verbindung | Direkte Verbindung | Textdatei mit Verweis |
Dateisystemgrenze | Nur innerhalb eines Dateisystems | Kann über Dateisystemgrenzen hinweg erstellt werden |
Inode-Nummer | Gleiche Inode-Nummer wie die Originaldatei | Eigene Inode-Nummer |
Auflösung | Keine Auflösung erforderlich | Auflösung beim Zugriff |
Verwendung | Verknüpfung von Dateien auf demselben Dateisystem | Verknüpfung von Dateien oder Verzeichnissen über Dateisystemgrenzen hinweg |
Verwendung des "ln" Befehls zum Erstellen von symbolischen Links
Symbolfenische Links erstellst du in Linux mithilfe des Befehls ln
. Die Syntax für einen symbolischen Link ist:
ln -s Zielpfad SymbolischerLink
wobei:
- Zielpfad der Dateipfad oder Verzeichnispfad ist, auf den der symbolische Link verweist
- Symbolischer Link der Name des zu erstellenden symbolischen Links ist
Absolute symbolische Links
Wenn der Zielpfad ein absoluter Pfad (beginnend mit einem Schrägstrich /
) ist, wird ein absoluter symbolischer Link erstellt. Dieser Link verweist immer auf denselben Dateipfad, unabhängig vom aktuellen Arbeitsverzeichnis.
ln -s /home/user/Dokumente DokumentenLink
Relative symbolische Links
Wenn der Zielpfad ein relativer Pfad (ohne führenden Schrägstrich) ist, wird ein relativer symbolischer Link erstellt. Dieser Link verweist relativ zum aktuellen Arbeitsverzeichnis.
ln -s Dokumente/Bericht BerichtLink
Beispiel
Im Folgenden ist ein Beispiel für die Verwendung des Befehls ln
zum Erstellen eines symbolischen Links:
ln -s /home/user/Dokumente/Dokumente DokumentenLink
Dieser Befehl erstellt einen symbolischen Link mit dem Namen DokumentenLink
im aktuellen Arbeitsverzeichnis, der auf das Verzeichnis /home/user/Dokumente/Dokumente
verweist.
Erstellen relativer symbolischer Links
Wenn du einen relativen symbolischen Link erstellst, gibst du den Pfad zum Ziel relativ zur Position deines aktuellen Arbeitsverzeichnisses an. Dies ist nützlich, wenn du eine Datei oder ein Verzeichnis an einen anderen Speicherort auf demselben Dateisystem verschieben oder deren Pfad umbenennen möchtest, ohne den symbolischen Link zu unterbrechen.
Verwendung des "ln" Befehls mit relativen Pfaden
Verwende zum Erstellen eines relativen symbolischen Links den Befehl ln
mit dem Flag -s
(symbolisch) gefolgt vom ursprünglichen Pfad und dem Pfad des symbolischen Links:
ln -s Pfad/zu/ursprünglicher_Datei Pfad/zu/symbolischem_Link
Beispiel:
ln -s /home/benutzer/Dokumente/Bericht.txt /home/benutzer/Downloads/Bericht
Dieser Befehl erstellt einen relativen symbolischen Link mit dem Namen "Bericht" im Verzeichnis "Downloads", der auf die Datei "Bericht.txt" im Verzeichnis "Dokumente" verweist.
Vorteile relativer symbolischer Links
- Portabilität: Du kannst relative symbolische Links auf verschiedenen Computern verwenden, solange die relative Pfadstruktur gleich bleibt.
- Flexibilität: Du kannst die ursprünglichen Dateien oder Verzeichnisse verschieben oder umbenennen, ohne die symbolischen Links zu unterbrechen.
- Vereinfachte Dateiverwaltung: Du kannst mit symbolischen Links verschiedene Ansichten deiner Dateien und Verzeichnisse erstellen, ohne diese duplizieren zu müssen.
Einschränkungen relativer symbolischer Links
- Abhängigkeit vom aktuellen Arbeitsverzeichnis: Relative symbolische Links funktionieren nur, wenn du dich im richtigen Arbeitsverzeichnis befindest.
- Mögliche Schleifen: Du kannst keine Schleifen mit relativen symbolischen Links erstellen, da dies zu unendlichen Verweisen führen würde.
Erstellen absoluter symbolischer Links
Absolute symbolische Links referenzieren eine Datei oder ein Verzeichnis anhand ihres vollständigen Pfads. Im Gegensatz zu relativen symbolischen Links, die relativ zum aktuellen Arbeitsverzeichnis aufgelöst werden, werden absolute symbolische Links unabhängig vom aktuellen Arbeitsverzeichnis aufgelöst.
Syntax
Um einen absoluten symbolischen Link zu erstellen, verwende folgende Syntax:
ln -s /absoluter/Pfad/zur/Datei/oder/zum/Verzeichnis symbolischer_Link_Name
Beispiel
Angenommen, du hast eine Datei namens "datei.txt" im Verzeichnis "/home/nutzer/dokumente". Du kannst einen absoluten symbolischen Link zu dieser Datei auf deinem Desktop erstellen:
ln -s /home/nutzer/dokumente/datei.txt ~/Desktop/datei.lnk
Dadurch wird ein symbolischer Link namens "datei.lnk" auf deinem Desktop erstellt, der auf die Datei "datei.txt" verweist.
Vorteile der absoluten symbolischen Links
- Konsistenz: Absolute symbolische Links sind immer auflösbar, unabhängig vom aktuellen Arbeitsverzeichnis.
- Portabilität: Absolute symbolische Links können auf anderen Systemen verwendet werden, sofern diese den Zielpfad haben.
- Fehlermeldung: Absolute symbolische Links können verwendet werden, um Fehlermeldungen zu erstellen, wenn auf eine nicht vorhandene Datei verwiesen wird.
Hinweise
- Verwende keine relativen Pfade, wenn du einen absoluten symbolischen Link erstellen möchtest.
- Der Zielpfad muss existieren, wenn der symbolische Link erstellt wird.
- Mit dem Befehl
readlink -f
kannst du den absoluten Pfad eines symbolischen Links auflösen.
Auflösen von symbolischen Links
Symbolische Links verweisen auf den Pfad des Ziels und nicht auf die Datei oder das Verzeichnis selbst. Daher musst du sie auflösen, um auf den tatsächlichen Inhalt zugreifen zu können.
Wozu dienen aufgelöste symbolische Links?
- Zugriff auf den Zielinhalt: Durch das Auflösen eines symbolischen Links erhältst du Zugriff auf die ursprüngliche Datei oder das Verzeichnis.
- Verfolgung von Zieländerungen: Wenn das Ziel eines symbolischen Links verschoben wird, löst das Betriebssystem den Link automatisch neu auf, sodass du weiterhin auf die korrekten Daten zugreifen kannst.
Methoden zum Auflösen symbolischer Links
Es gibt mehrere Möglichkeiten, symbolische Links aufzulösen:
Verwendung von "readlink"
Der Befehl readlink
gibt den Pfad des Ziels eines symbolischen Links aus.
readlink /pfad/zum/symbolischen_link
Verwendung von "ls -l"
Die Option -l
des Befehls ls
listet Informationen zu Dateien und Verzeichnissen auf, einschließlich der Ziele von symbolischen Links.
ls -l /pfad/zum/symbolischen_link
Systemfunktionen
Programmiersprachen bieten Systemfunktionen zum Auflösen symbolischer Links, z. B. realpath()
in C.
Bearbeiten von symbolischen Links
Nachdem du einen symbolischen Link erstellt hast, kannst du gegebenenfalls seinen Inhalt oder Zielpfad bearbeiten. Hier sind ein paar Möglichkeiten, wie du symbolische Links unter Linux bearbeiten kannst:
Ändern des Zielpfads eines symbolischen Links
Um den Zielpfad eines symbolischen Links zu ändern, kannst du den Befehl ln -sf
wie folgt verwenden:
ln -sf neuer_zielpfad symbolischer_link
Dabei ist neuer_zielpfad
der neue Pfad, auf den der symbolische Link verweisen soll.
Konvertieren eines symbolischen Links in einen Hardlink
Du kannst einen symbolischen Link auch in einen Hardlink konvertieren. Ein Hardlink stellt eine direkte Verbindung zwischen zwei Dateien oder Verzeichnissen her und teilt die gleichen Inode-Informationen. Um einen symbolischen Link in einen Hardlink zu konvertieren, verwende folgenden Befehl:
ln targetdatei symbolischer_link
Hinweis: Diese Konvertierung ist nur möglich, wenn sowohl die Zieldatei als auch der symbolische Link auf demselben Dateisystem vorhanden sind.
Löschen des Ziels eines symbolischen Links
Wenn du das Ziel eines symbolischen Links löschen möchtest, ohne den Link selbst zu entfernen, kannst du den Befehl unlink
verwenden:
unlink targetdatei
Dabei ist targetdatei
der Pfad zur Zieldatei des symbolischen Links.
Wiederherstellen eines gelöschten Ziels
Wenn du versehentlich das Ziel eines symbolischen Links gelöscht hast, kannst du es mithilfe von Datenwiederherstellungssoftware wiederherstellen. Es gibt eine Vielzahl von Datenwiederherstellungsprogrammen für Linux, wie z. B. Recuva und TestDisk.
Weitere Tipps zur Bearbeitung symbolischer Links
- Bearbeite symbolische Links mit Vorsicht, da Änderungen sich auf die Funktionalität deiner Software und deines Systems auswirken können.
- Wenn du einen symbolischen Link bearbeitest, der Teil eines ausführbaren Programms oder Skripts ist, musst du möglicherweise auch das Programm oder Skript selbst bearbeiten.
- Erstelle immer eine Sicherungskopie deiner wichtigen Daten, bevor du symbolische Links bearbeitest.
Entfernen von symbolischen Links
Sobald du keinen Bedarf mehr für einen symbolischen Link hast, kannst du ihn entfernen. Dies ist ein einfacher Vorgang, der auf verschiedene Arten durchgeführt werden kann.
Verwendung des Befehls "rm"
Die gebräuchlichste Methode zum Entfernen von symbolischen Links ist die Verwendung des Befehls rm
:
rm /pfad/zum/symbolischen_link
Dabei ersetzt /pfad/zum/symbolischen_link
den tatsächlichen Pfad zum symbolischen Link.
Verwendung von Dateimanagern
Wenn du eine grafische Benutzeroberfläche verwendest, kannst du auch einen Dateimanager verwenden, um symbolische Links zu entfernen. Navigiere dazu zum Speicherort des symbolischen Links, wähle ihn aus und drücke die Entf-Taste oder klicke mit der rechten Maustaste und wähle "Löschen".
Vorsichtsmaßnahmen
Beim Entfernen symbolischer Links musst du vorsichtig sein, da du nur den Link und nicht die referenzierte Datei oder das Verzeichnis löschst. Wenn du beispielsweise einen symbolischen Link namens link
hast, der auf die Datei datei
verweist, löscht rm link
nur den symbolischen Link, nicht die Datei datei
.
Weitere Überlegungen
- Wenn du einen symbolischen Link zu einem Verzeichnis entfernst, wird das Verzeichnis nicht gelöscht, sondern nur der Link dazu.
- Wenn du einen symbolischen Link zu einer Datei entfernst, wird die Datei nicht gelöscht, sondern nur der Link dazu.
- Wenn du einen symbolischen Link zu einer nicht vorhandenen Datei oder einem nicht vorhandenen Verzeichnis entfernst, erhältst du eine Fehlermeldung.
Fehlerbehebung bei Problemen mit symbolischen Links
Der symbolische Link funktioniert nicht
Überprüfe, ob der Zielpfad existiert und ob du die erforderlichen Berechtigungen zum Lesen oder Schreiben hast. Stelle außerdem sicher, dass der symbolische Link richtig geschrieben ist.
Der symbolische Link verweist auf einen anderen symbolischen Link
Dies kann zu einer Endlosschleife führen, die das Auflösen des Ziels verhindert. Löse den sekundären symbolischen Link auf oder erstelle ihn neu, sodass er direkt auf das endgültige Ziel verweist.
Der symbolische Link verweist auf eine nicht mehr vorhandene Datei oder ein nicht mehr vorhandenes Verzeichnis
Wenn das Ziel des symbolischen Links gelöscht oder verschoben wurde, wird der symbolische Link zu einer defekten Verknüpfung. Lösche den symbolischen Link oder aktualisiere ihn mit dem Befehl ln
neu.
Fehlermeldung "Permission denied"
Du benötigst Schreibberechtigungen für das Verzeichnis, in dem du den symbolischen Link erstellst, sowie Leseberechtigungen für das Ziel. Überprüfe die Berechtigungen mit dem Befehl ls -l
und passe sie gegebenenfalls mit chmod
an.
Fehlermeldung "Operation not permitted"
Möglicherweise versuchst du, einen symbolischen Link zu einem Verzeichnis zu erstellen, das sich nicht auf demselben Dateisystem befindet. In diesem Fall musst du einen Hardlink erstellen.
Fehlermeldung "File exists"
Der angegebene Name für den symbolischen Link wird bereits von einer anderen Datei oder einem anderen Verzeichnis verwendet. Wähle einen anderen Namen oder lösche die vorhandene Datei oder das Verzeichnis.
Fehlender Befehl "ln"
Überprüfe, ob der Befehl ln
installiert ist. Unter Debian-basierten Systemen kannst du ihn mit sudo apt install coreutils
installieren. Unter macOS ist er standardmäßig verfügbar.