Symlinks bieten die Möglichkeit, Ordner von verschiedenen Datenträgern unter einem Verzeichnis z. B. home, gemeinsam verfügbar zu machen.
Wird die Quelle verschoben oder umbenannt, verweist der Symlink ins Leere.
Zumeist sind verwaiste Symlinks relativ selten und treten auf einem frisch installierten Linux-System nicht auf.
Nach Veränderungen auf Dateiservern mit mehreren Partitionen – die in Symlinks zusammengefasst sind – kann es aber immer wieder defekte Symlinks geben.
Diese lassen sich zum einem mit dem Bordmittel find, alternativ mit Hilfswerkzeugen aus den Standard-Paketquellen der jeweils verwendeten Linux-Distribution aufspüren.
Der Befehl find listet mit
find . -type l -exec test ! -e {} \; -print
alle defekten Symlinks – ausgehend vom aktuellen Verzeichnis – auf…
Terminal-Ausgabe:
Einen einfacheren Weg bietet das spezialisierte Tool symlinks.
Installieren lässt sich dieses unter Debian, Ubuntu und Derivate mit dem Befehl:
sudo apt install symlinks
Entgegen der vorherigen Variante erfordert diese Vorgehensweise keine überlange kryptische Befehlszeilen.
Der folgende Befehl:
symlinks . -r
– ausgehend vom aktuellen Verzeichnis – kontrolliert dann alle Symlinks die verwaist sind und evtl. einer Überprüfung bedürfen, ob es die Zielordner oder Dateien noch gibt.
Anmerkung:
Der Punkt (.) in dem Linux-Befehl „symlinks . -r“ hat die Bedeutung, dass symbolische Links – in diesem Fall – relativ zum aktuellen Verzeichnis erstellt werden sollen.
Das System-Tool symlinks überprüft die Dateisystem-Verknüpfungen im Bezugs – Ordner auf Fehler und listet verwaiste Links als „dangling“ auf.
Wissenswertes zur Bedienung
Verfügbare Optionen | Bedeutung |
-v | zeigt auch relative Verknüpfungen an, welche sonst ausgelassen werden |
-s | zeigt auch überlange Verknüpfungen an, welche sonst ausgelassen werden |
-r | der Befehl wird auch auf Unterverzeichnisse angewandt |
-d | löscht tote Verknüpfungen |
-c | absolute Verknüpfungen werden in relative umgewandelt, unsauber erstellte werden korrigiert und (falls -s zusätzlich aktiviert ist) überlange ebenso |
-t | listet die Änderungen auf, die mit -c gemacht werden, ohne jedoch wirklich etwas zu ändern |
Symlinks Klassifizierungen
Klassifizierungen | Bedeutung |
relative | Verknüpfung, dessen Ziel relativ zu ihrem eigenen Ort angegeben ist |
absolute | Verknüpfung, dessen Ziel absolut (startend mit /) angegeben ist |
dangling | tote Verknüpfung, dessen Ziel (momentan) nicht erreichbar ist |
messy | unsauber erstellte Verknüpfung, die unnötige / oder . in ihrem Pfad enthält |
lengthy | überlange Verknüpfung, die ../ (Sprung in das übergeordnete Verzeichnis) öfter als notwendig enthält |
other_fs | Verknüpfung, dessen Ziel außerhalb des Dateisystems, in dem symlinks ausgeführt wird, liegt |
changed | nach einer Änderung durch die Option -c wird die neue Verknüpfung mit der Klassifizierung changed angezeigt |
deleted | nach dem Löschen durch die Option -d wird die gelöschte Verknüpfung mit der Klassifizierung deleted angezeigt |
Unterschied zwischen relativen und absoluten Pfaden bezüglich Symlinks
Ein Pfad ist eine Angabe des Speicherorts einer Datei oder eines Ordners in einem Dateisystem. Es gibt zwei Arten von Pfaden: Relative Pfade und absolute Pfade. Der Unterschied liegt darin, wie der Speicherort angegeben wird.
Relativer Pfad:
Ein relativer Pfad gibt den Speicherort einer Datei oder eines Ordners relativ zum aktuellen Arbeitsverzeichnis an. Das bedeutet, dass der Pfad in Bezug auf den aktuellen Speicherort angegeben wird. Ein relativer Pfad kann verwendet werden, um auf Dateien oder Ordner innerhalb des gleichen Verzeichnisses oder in Unterordnern zu verweisen. Wenn sich der aktuelle Arbeitsverzeichnis ändert, ändert sich auch der relative Pfad entsprechend. Ein relativer Pfad beginnt normalerweise nicht mit einem Schrägstrich (/).
Absoluter Pfad:
Ein absoluter Pfad gibt den vollständigen Speicherort einer Datei oder eines Ordners im Dateisystem an. Er enthält den gesamten Pfad vom Stammverzeichnis bis zur Datei oder zum Ordner. Ein absoluter Pfad beginnt normalerweise mit einem Schrägstrich (/).
Ein absoluter Pfad bleibt unverändert, unabhängig vom aktuellen Arbeitsverzeichnis.
Bezüglich Symlinks gibt es keinen spezifischen Unterschied zwischen relativen und absoluten Pfaden. Hierbei handelt es sich um eine Art von Dateiverknüpfung, die auf eine andere Datei oder einen anderen Ordner verweist. Sowohl relative als auch absolute Pfade können verwendet werden, um auf die Datei oder den Ordner zu verweisen, auf den der Symlink zeigt.
5 Reaktionen
Vielen Dank für den hilfreichen Artikel!
Folgende Aussage bedarf Berichtigung/Ergänzung:
„Diese Art der Verlinkung arbeitet mit absoluten Pfaden.“
Wie im Artikel unter ‚Symlinks Klassifizierungen‘ selbst beschrieben, können Symlinks erstellt werden mit:
* absoluten Pfaden
* relativen Pfaden
Könntest Du bitte Bedeutung des „.“ in der Syntax des angegebenen Beispiels erklären?
symlinks . -r /home/user
Folgend der Syntax, erwähnt in der man page:
symlinks [-cdorstv] dirlist
für die recursive Durchsuchung des home Verzeichnisses des Users user genügt:
symlinks -r /home/user
Der Punkt ist die Option. Für mehrere Benutzer Administrator und Andere:
symlinks Option -r /home
symlinks -d -r /home
Hallo @JaneDoe,
sorry, dass ich mich erst heute melde – ich war verreist…
Danke für Deine Anmerkungen. Ich habe den Beitrag entsprechend geändert und als Ergänzung und zum besseren Verständnis den Unterschied zwischen relativen und absoluten Pfaden erläutert.
Vielleicht war die Einführung etwas irreführend und unglücklich gewählt…
Hi zebolon,
vielen Dank für die Rückmeldung und Ergänzung.
Anmerkungen zu den Ausführungen über Relative Pfade:
* ein relativer Pfad kann sehr wohl auch auf Daten in höher gelegenen Verzeichnissen verweisen
* auch ein relativer Pfad verändert sich nicht, wenn der Symlink (oder die Datei) kopiert/verschoben wird