Symbolische Verknüpfung

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Symbolischer Link)
Wechseln zu: Navigation, Suche

Eine symbolische Verknüpfung, auch symbolischer Link, Symlink oder Softlink genannt, ist eine Verknüpfung in einem Dateisystem (Dateien und Verzeichnisse), die auf eine andere Datei oder ein anderes Verzeichnis verweist. Es ist also lediglich eine Referenz auf die Zieldatei bzw. das Zielverzeichnis. Ein Löschen oder Verschieben der eigentlichen Datei führt üblicherweise dazu, dass die Referenz „ins Leere“ weist. Anders als ein Hardlink ist diese Referenz nicht gleichwertig zum eigentlichen Dateisystem-Eintrag der referenzierten Datei.

Unix[Bearbeiten]

In einem Unix-System kann man mit dem folgenden Befehl eine symbolische Verknüpfung erstellen[1]

ln -s /Zieldatei /Referenz

oder verständlicher

ln -s /Pfad_1/echte_Datei /Pfad_2/Symlink

Es lässt sich auch ein Link namens „/home/wiki/nullink“ erstellen, der auf /dev/null zeigt:

ln -s /dev/null /home/wiki/nullink

Ob die Datei „/home/wiki/nullink“ eine symbolische Verknüpfung ist, findet man mit einem dieser Befehle heraus:

file /home/wiki/nullink
ls -l /home/wiki/nullink

Der Unterschied zwischen einer symbolischen Verknüpfung und einem harten Link besteht darin, dass eine symbolische Verknüpfung auf einen Pfad zeigt, d. h. technisch handelt es sich um eine Textdatei mit einem Pfad wie /usr/lib/anton.tar als Inhalt und einer Markierung, dass es sich um einen symbolischen Link handelt. Ein harter Link zeigt dagegen auf die Datei (oder das Verzeichnis, welches auch nur eine spezielle Art von Datei ist) selbst, technisch meist durch einen Inode repräsentiert, was zur Folge hat, dass ein harter Link immer noch funktioniert, wenn die Zieldatei umbenannt oder auf derselben Partition (oder auf demselben "Volume") verschoben wurde (dabei bleibt der Inode nämlich erhalten). Zeigt aber eine symbolische Verknüpfung darauf, bekommt sie davon nichts mit, wenn die Zieldatei verschoben oder umbenannt wird, womit die symbolische Verknüpfung dann ins Leere zeigt. Gleiches gilt, wenn eine symbolische Verknüpfung mit relativem Ziel selbst verschoben wird, da sie den Weg (Pfad) zum Ziel von ihrem alten Ort ausgehend beschreibt.

Der Vorteil symbolischer Verknüpfungen ist, dass diese partitions- und dateisystemübergreifend sind und auch problemlos auf Verzeichnisse verweisen können, was bei harten Links nicht der Fall ist. Zwar sind harte Links auf Verzeichnisse prinzipiell möglich, sollten aber vermieden werden und dürfen in der Regel nur vom Systemverwalter angelegt werden. Symbolische Verknüpfungen können Benutzer verwirren, da es auf den ersten Blick so scheint, als sei die verknüpfte Datei in mehreren Verzeichnissen gleichzeitig vorhanden; das Löschen der Originaldatei führt aber dazu, dass alle symbolischen Verknüpfungen, die darauf verweisen, ins Leere gehen und die Datei insofern verloren ist (die verbleibenden, ins Leere weisenden Verknüpfungen werden auch broken symlinks genannt). Bei harten Links ist dies erst der Fall, wenn auch der letzte Name, d. h. die letzte Referenz auf diese Datei, gelöscht wurde.

Symbolische Verknüpfungen auf Verzeichnisse können problematisch sein, wenn Benutzer oder Programme unbedarft mit Verzeichnisbäumen umgehen. Leicht entsteht eine endlose Schleife und damit ein Pufferüberlauf des Verzeichnispfadpuffers, was zu Abstürzen oder gefährlichen Fehlfunktionen führt. Auch kann das Löschen eines Verzeichnisbaums dazu führen, dass die Inhalte des symbolisch verknüpften Verzeichnisses ebenfalls gelöscht werden.

Unix versucht dem zu einem gewissen Grad vorzubeugen, indem es verbietet, eine symbolische Verknüpfung auf ein Verzeichnis über den Systembefehl „rmdir“ zu löschen, damit unbedarft mit symbolischen Verknüpfungen umgehende Programme eine Fehlermeldung erhalten und fehlschlagen, wenn sie eine solche Verknüpfung entfernen wollen. Das Kommando „rm -r“ hingegen entfernt zwar den symbolischen Link, nicht jedoch dessen Ziel.

Desktop-Shortcuts[Bearbeiten]

Grafische Arbeitsumgebungen wie der KDE Plasma Workspaces oder Gnome bieten auf unixoiden Systemen die Möglichkeit sogenannte Shortcuts (en: „räumliche Abkürzung“) zu erstellen und nutzen, die normalerweise die Endung *.desktop tragen . Dabei handelt es sich um Dateiverknüpfungen, die aus einer INI-Dateien ähnlichen Struktur aufgebauten Textdatei bestehen.[2] Diese Konfigurationsdatei kann einen Pfad oder Befehl, Beschriftungen, Hilfetexte, Symbole und diverse andere Attribute definieren, die die Arbeitsoberfläche interpretieren und ausführen kann. Diese Shortcuts sind im Gegensatz zu symbolischen Links für Anwendungen und Benutzer nicht transparent. Deshalb sind sie mit den Windows-Shortcuts oder MacOS Alias zu vergleichen, bieten aber mehr Funktionen als diese.

Mac OS X[Bearbeiten]

Als Unix-System beherrscht Mac OS X auch harte und symbolische Links. Erstere werden üblicherweise nicht verwendet, außer in der Apple-eigenen Dateisicherung Time Machine. Symbolische Links werden, wie in Unix üblich, über die Kommandozeile erzeugt.

Zusätzlich hat Mac OS X von seinem Vorgänger Mac OS sogenannte Aliase geerbt,[3] spezielle Dateien mit versteckten Eigenschaften, die auf eine andere Datei oder einen Ordner verweisen. Sie sind wesentlich mächtiger als die Windows-Shortcuts oder Desktop-Shortcuts, da die Unterstützung dieser Aliase tief im Betriebssystem verankert ist (im klassischen Mac OS im Alias Manager). Ein Alias kann zusätzlich einer auf demselben Dateisystem („Volume“) verschobenen Datei folgen. Dazu werden in den versteckten Informationen (in der Resource Fork) nicht nur der Pfad auf die Zieldatei, sondern auch ihre Inode-Nummer sowie die Volume-Id gespeichert.

Windows[Bearbeiten]

Seit Windows Vista bzw. Windows Server 2008 (beide intern Windows NT 6.0) stehen über die Win32-API echte symbolische Verknüpfungen zur Verfügung, die transparent im Dateisystem vorliegen und auf Dateien und Verzeichnisse des eigenen Computers verweisen können. Symbolische Verknüpfungen können eine relative Zielangabe enthalten.

Zum Anlegen dieser symbolischen Verknüpfung wird das Recht Create Symbolic Link benötigt. Dieses steht standardmäßig nur Benutzern mit Administratorrechten zur Verfügung. Weiterhin muss beim Anlegen der Verknüpfung bekannt sein, ob das Ziel eine Datei oder ein Verzeichnis ist. Aus diesen Gründen sind die symbolischen Verknüpfungen von Windows nicht vollständig kompatibel zu POSIX.

Anlegen symbolischer Verknüpfungen ab Windows Vista:

 c:\>mklink "C:\EinLink.pdf" "D:\EinDokument.pdf"
 c:\>mklink /d "D:\Pfad1\Neues Verzeichnis" "..\Pfad2\Reales Verzeichnis"
 c:\>mklink /d "C:\Netzwerkfreigabe" "\\meinserver\meinefreigabe"

Die zweite Zeile zeigt, dass die Zielangabe auch ein relativer Pfad sein kann, der dann erst bei Aufruf der symbolischen Verknüpfung aufgelöst wird, d. h. sollten z. B. D:\Pfad1 und D:\Pfad2 an anderer Stelle verschoben werden, z. B. von D:\ nach D:\Archiv\ würde die Auflösung der symbolischen Verknüpfung immer noch funktionieren im Gegensatz zur Verwendung einer absoluten Angabe. Andererseits, wenn D:\Pfad1\ und D:\Pfad2\ nicht mehr einen gemeinsamen Elternpfad teilen würden, wiese die relative symbolische Verknüpfung dann auf einen nicht mehr vorhandenen Pfad.

Anzeigen, wohin eine symbolische Verknüpfung verweist – der Parameter /al filtert die Ausgabe auf symbolische Verknüpfung –:

 c:\>dir /al
 Datenträger in Laufwerk C: ist abc
 Verzeichnis von C:\
 07.12.2010  10:28    <SYMLINK>   EinLink.pdf [D:\EinDokument.pdf]

Löschen symbolischer Verknüpfungen:

 c:\>del "C:\EinLink.pdf"
 c:\>rmdir "D:\Pfad1\Neues Verzeichnis" 
 c:\>rmdir "C:\Netzwerkfreigabe"

Einzelnachweise[Bearbeiten]

  1. Manpage von ln, gefunden unter ln – make links between files. Abgerufen am 22. Mai 2014.
  2. Joe: Anatomy of a .desktop File. In: The Linux Critic. 7. April 2010, abgerufen am 20. Februar 2014 (englisch).
  3. Verknüpfung – Alias, maceinsteiger.de