- Symbolischer Link
-
Eine symbolische Verknüpfung, auch symbolischer Link, Symlink oder Softlink genannt, ist eine Verknüpfung in einem Dateisystem (Datei oder Verzeichnis), die auf eine andere Datei oder ein anderes Verzeichnis verweist. Es ist also lediglich eine Referenz und kein richtiges Element. Um einen Eintrag in das Dateiverzeichnis zu erstellen, werden harte Links (engl. hardlink) verwendet.
Inhaltsverzeichnis
Unix
In einem Unix-System kann man mit einem der folgenden Befehle eine Verknüpfung namens „/home/wiki/nullink“ erstellen, die auf /dev/null zeigt:
> ln -s /dev/null /home/wiki/nullink > ln --symbolic /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
Allgemein muss man beachten, dass eine symbolische Verknüpfung anders als ein „harter Link“ auf einen Pfad zeigt. Ein „harter Link“ zeigt auf einen Inode, was bedeutet, dass ein „harter Link“ immer noch funktioniert, wenn die Zieldatei verschoben wurde. Wenn man aber die Zieldatei verschiebt, und ein Symlink zeigt drauf, kann die Zieldatei nicht wissen, dass eine Verknüpfung auf sie zeigt, womit die symbolische Verknüpfung ins Leere zeigt. Gleiches gilt, wenn eine relative symbolische Verknüpfung selbst verschoben wird.
Der Vorteil ist aber, dass diese Arten von Verknüpfungen partitions- und dateisystemübergreifend arbeiten können und auch bei Verzeichnissen funktionieren, was bei harten Links nicht der Fall ist.
Symbolische Verknüpfungen können einige Benutzer verwirren. Auch wenn es auf den ersten Blick so scheint, als sei die verknüpfte Datei in mehreren Verzeichnissen gleichzeitig vorhanden, führt das Löschen der Originaldatei dazu, dass alle symbolischen Verknüpfungen, die darauf verweisen, ins Leere gehen und die Datei damit verloren ist.
Symbolische Verknüpfungen auf Verzeichnisse können mit Programmen gefährlich werden, die unbedarft mit Verzeichnisbäumen umgehen. Bestenfalls entsteht eine endlose Schleife sowie ein Pufferüberlauf des Verzeichnispfadpuffers, was zu Abstürzen oder gefährlichen Fehlfunktionen führt. Schlimmstenfalls führt das Löschen eines Verzeichnisbaums dazu, dass auch 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. Ein solches Programm ist der SSH-Client (die Windows-Version) von „ssh.com“.
Windows
Die „Verknüpfung“ unter Microsoft Windows ist mit einer symbolischen Verknüpfung nicht zu vergleichen, da sie keine Aliasverbindung darstellt, die direkt verfolgt werden kann. Im Gegensatz dazu können durch eine symbolische Verknüpfung z.B. auch Unterverzeichnisse des Ziels direkt angesprochen werden.
Seit Windows NT 6.0 (Windows Vista, Windows Server 2008) stehen echte symbolische Links zur Verfügung, die transparent im Dateisystem vorliegen und auf Dateien, Verzeichnisse oder UNC-Pfade verweisen können. Symbolische Links dürfen allerdings nur mit Administratorrechten angelegt werden.
Anlegen symbolischer Links unter Windows Vista und Windows Server 2008:
c:\>mklink "C:\Neue Datei" "D:\Alte Datei" c:\>mklink /d "C:\Neues Verzeichnis" "D:\Pfad\Reales Verzeichnis" c:\>mklink /d "C:\Netzwerkshare" "\\meinserver\meinshare"
Löschen symbolischer Links unter Windows Vista und Windows Server 2008:
c:\>erase "C:\Neue Datei" c:\>rmdir /s /q "C:\Neues Verzeichnis" c:\>rmdir /s /q "C:\Netzwerkshare"
Symbolische Links unter Windows bleiben (genau wie unter UNIX) auch nach einem Neustart des Systems bestehen.
Eine weitere Möglichkeit in älteren Versionen von Windows sind sogenannte Abzweigungspunkte (englisch: „junction points“), welche jedoch das Dateisystem NTFS 5 oder ab Version 3.0 (Windows 2000, Windows XP, Windows 2003 und Windows Vista) voraussetzten. Diese sind den symbolischen Verknüpfungen auf Verzeichnisse sehr viel ähnlicher als die üblichen Verknüpfungen.
Abzweigungspunkte können unter den angegebenen Voraussetzungen mit den bei Microsoft erhältlichen Zusatzbefehlen junction.exe[1] oder der linkd.exe[2] aus den Windows 2003 Resource Kit Tools erstellt werden.
Mit den in der Kommandozeile auszuführenden Befehlen
C:\>JUNCTION.EXE "C:\Neues Verzeichnis" "D:\Pfad\Reales Verzeichnis"
oder
C:\>LINKD.EXE "C:\Neues Verzeichnis" "D:\Pfad\Reales Verzeichnis"
kann ein Abzweigungspunkt "C:\Neues Verzeichnis" angelegt werden, der "D:\Pfad\Reales Verzeichnis" referenziert. Der Inhalt von "D:\Pfad\Reales Verzeichnis" (junction target) kann im Explorer nun auch unter "C:\Neues Verzeichnis" (junction directory) aufgerufen und gestartet werden. Abzweigungspunkte bleiben ebenfalls nach einem Windows-Neustart erhalten.
Die Aufhebung eines Abzweigungspunktes erfolgt mittels folgendem Kommandozeilenbefehls:
C:\>JUNCTION.EXE -d "C:\Neues Verzeichnis"
oder
C:\>LINKD.EXE "C:\Neues Verzeichnis" /D
Wobei der Parameter "d" für DELETE und "C:\Neues Verzeichnis" für das angelegte Junction target steht.
Auf der Kommandozeile können Abzweigungspunkte auch mit dem DIR-Befehl angezeigt werden, wobei anstelle eines <DIR> (für normale Verzeichnisse) dann <VERBINDUNG> oder <JUNCTION> ausgegeben wird.
Eine installierte Cygwin-Umgebung befähigt zudem auch die Windows-Kommandozeile (auf NTFS unter Windows 2000, Windows XP, Windows 2003 und Windows Vista) mittels des Kommandos ln symbolische und harte Links zu setzen.
Mac OS X
Ähnlich wie bei Windows ist ein „Alias“ nicht mit einer symbolischen Verknüpfung vergleichbar. Symbolische Verknüpfungen werden – wie bei anderen Unix-Systemen auch – über eine Shell mit dem
ln
-Befehl erstellt.Quellen
Weblinks
- Junction Link Magic (englisch) – Programm zum Erstellen von symbolischen Verknüpfungen unter Windows 2000/XP/2003 auf NTFS-Partitionen
- NTFS Link Ext (englisch) – Programm zum Erstellen von HardLinks, Junctions und Symbolische Links unter Windows NT4/2000/XP/XP64 auf NTFS-Partitionen
- NTFS Link Shellextension (englisch) - Programm zum Erstellen von HardLinks, Junctions und Symbolischen Links unter Windows NT4/2000/XP/XP64 auf NTFS-Partitionen
- Dateibasierte symbolische Verknüpfungen mit Windows Vista
Wikimedia Foundation.