- Symbolische Verknüpfung
-
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.
Inhaltsverzeichnis
Unix
In einem Unix-System kann man mit dem folgenden Befehl eine symbolische Verknüpfung erstellen
ln -s /Quelldatei /Zieldatei(Optional)
oder verständlicher
ln -s /Pfad/echte_Datei /Pfad/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. Ein harter Link zeigt auf einen Inode, was bedeutet, dass ein harter Link immer noch funktioniert, wenn die Zieldatei umbenannt oder verschoben wurde. Zeigt aber eine symbolische Verknüpfung darauf, bekommt sie davon nichts mit, wenn die Zieldatei verschoben oder umbenannt wird, womit die symbolische Verknüpfung 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 ist, dass diese symbolischen Verknüpfungen 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 Super-User 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. Bei harten Links ist dies erst der Fall, wenn auch der letzte Name dieser Datei gelöscht wurde.
Symbolische Verknüpfungen auf Verzeichnisse können problematisch sein, wenn Benutzer oder Programme 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 die Inhalte des symbolisch verknüpften Verzeichnisses ebenfalls gelöscht werden (sogenannter broken symlink).
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“. Das Kommando „
rm -r
" hingegen entfernt zwar den symbolischen Link, nicht jedoch dessen Ziel.Windows
Bei Windows gibt es fünf Arten von Verknüpfungen.
Dateiverknüpfung
Bei der Dateiverknüpfung von Microsoft Windows handelt es sich um eine gewöhnliche, sehr kleine Datei, welche die versteckte Dateiendung lnk verwendet. Diese kleine Datei verweist auf eine andere Datei oder auf ein Verzeichnis. Außerdem kann die Dateiverknüpfung Angaben enthalten, wie das Ziel zu öffnen ist. Eine Dateiverknüpfung kann einen vom Ziel abweichenden Namen besitzen und wird gewöhnlich mit einem Pfeil links unten im Symbol (Icon) versehen.
Eine Dateiverknüpfung ist nicht transparent, das heißt, der Benutzer sieht die Verknüpfung im Windows-Explorer oder anderen Dateimanagern als Verknüpfung. Die meisten Anwendungen verfolgen solche Dateiverknüpfungen aber nicht; wenn die Anwendung versucht, die Dateiverknüpfung zu öffnen, wird in der Regel nicht automatisch das Ziel geöffnet, sondern die Anwendung versucht erfolglos, die Verknüpfung selbst zu öffnen.
Ordnerverknüpfung
Bei der Ordnervernüpfung[1] von Windows handelt es sich um ein Verzeichnis mit dem Attribut read only und/oder system, das eine auf das Ziel verweisende Dateiverknüpfung mit dem festen Namen target.lnk sowie eine (versteckte) Datei desktop.ini mit (mindestens) folgendem Inhalt enthält:
[.ShellClassInfo] CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Eine Ordnerverknüpfung ist (im Windows Explorer) transparent.
Ordnerverknüpfungen werden von Windows selbst erzeugt und verwendet, beispielsweise in der Netzwerkumgebung.
Shell Objects
shell objects[2] oder shell folder sind in der Windows Registry definierte Objekte, die u.a. auch die Funktion einer Verknüpfung realisieren können. Die (mindestens) notwendigen Registry-Einträge für ein solches shell object sind wie folgt (die CLSID\{00000000-0000-0000-0000-000000000000} wird hier als Platzhalter verwendet):
[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}] @="angezeigter Name" [HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\DefaultIcon] @="..." ; Pfad zum anzuzeigenden Symbol [HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\InProcServer32] @="%SystemRoot%\\System32\\ShDocVw.Dll" "ThreadingModel"="Apartment" [HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\Instance] "CLSID"="{0AFACED1-E828-11D1-9187-B532F1E9575D}" [HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\Instance\InitPropertyBag] "Attributes"=hex:15,00,00,00 "Target"="..." ; absoluter (nur ohne "TargetKnownFolder" oder "TargetSpecialFolder") ; oder relativer Pfad zum Zielobjekt "TargetKnownFolder"="{guidguid-guid-guid-guid-guidguidguid}" ; GUID des Zielordners, ab Windows Vista "TargetSpecialFolder"="0x00xy" ; CSIDL des Zielobjekts [HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\ShellFolder] "Attributes"=hex:00,00,00,00
Windows verwendet solche verknüpfenden shell objects selbst, beispielsweise für die virtuellen Ordner Eigene Dateien auf dem Desktop sowie Schriftarten und Verwaltung in der Systemsteuerung.
Ein shell object ist (im Windows Explorer) transparent.
Symbolische Verknüpfung
Seit Windows Vista bzw. Windows Server 2008 (beide intern Windows NT 6.0) stehen über das 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.
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
undD:\Pfad2
an anderer Stelle verschoben werden, z.B. vonD:\
nachD:\Archiv\
würde die Auflösung der symbolischen Verknüpfung immer noch funktionieren im Gegensatz zur Verwendung einer absoluten Angabe. Andererseits, wennD:\Pfad1\
undD:\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> EineVerknuepfung.pdf [D:\EinDokument.pdf]
Löschen symbolischer Verknüpfungen:
c:\>del "C:\Neue Datei" c:\>rmdir /s /q "D:\Pfad1\Neues Verzeichnis" c:\>rmdir /s /q "C:\Netzwerkfreigabe"
Symbolische Verknüpfungen unter Windows bleiben (genau wie unter UNIX) auch nach einem Neustart des Systems bestehen.
Abzweigungspunkte
Unabhängig davon gibt es seit der NTFS-Version 3.0, dem von Windows 2000 standardmäßig verwendeten Dateisystem, sogenannte Abzweigungspunkte (engl. „File System Reparse Points“, „Junctions“). Allerdings mangelte es bei Windows 2000 an mitgelieferten Werkzeugen zur Verwaltung von Abzweigungspunkten. Abzweigungspunkte sind den symbolischen Verknüpfungen auf Verzeichnisse sehr viel ähnlicher als die üblichen Verknüpfungen.
Abzweigungspunkte können ab Vista mit
mklink /J
angelegt werden und bei älteren Versionen mit den bei Microsoft erhältlichen Zusatzprogrammen junction.exe[3] und linkd.exe[4] aus den Windows 2003 Resource Kit Tools.Mit den in der Kommandozeile auszuführenden Befehlen
C:\>mklink /J "C:\Neues Verzeichnis" "D:\Pfad\Reales Verzeichnis"
oder
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"
(das Ziel des Abzweigungspunkt, engl. 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 folgenden Kommandozeilenbefehls:
>C:\>rmdir "C:\Neues Verzeichnis"
oder
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 Ziel des angelegten Abzweigungspunktes steht.Im Unterschied zu echten symbolischen Verknüpfungen werden in Abzweigungspunkten stets absolute Pfade gespeichert:
C:\>mklink /J junction destdir Verbindung erstellt für junction <<===>> destdir C:\>dir /al junction Datenträger in Laufwerk C: ist abc Verzeichnis von C:\ 07.12.2010 10:30 <VERBINDUNG> junction [C:\destdir]
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; auch das Verweisziel wird angezeigt.
Cygwin und Verknüpfungen
Die Cygwin-Umgebung unterstützt POSIX-kompatible harte Links und symbolische Verknüpfungen. Harte Links werden dabei transparent auf harte Links von Windows abgebildet. Vorhandene Abzweigungspunkte werden als symbolische Verknüpfung angezeigt. Von Cygwin aus angelegte symbolische Verknüpfungen werden allerdings emuliert, da die Windows-eigenen symbolischen Verknüpfungen nicht vollständig POSIX-kompatibel sind. Solche Verknüpfungen sind daher nur für Cygwin Programme sichtbar, sonstige Programme sehen nur eine Datei mit Systemattribut. Dies gilt auch unter Vista und Windows 7. Cygwin unterstützt auch symbolische Verknüpfungen, die von Microsoft SFU angelegt wurden. Umgekehrt gilt dies nicht. SFU verwendet ebenfalls Dateien zur Emulation, aber in einem abweichenden Format.
Mac OS X
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, spezielle Dateien mit versteckten Eigenschaften, die auf eine andere Datei oder einen Ordner verweisen. Im Gegensatz zu den lnk-Dateien von Windows ist die Verwendungsfähigkeit wesentlich weiterreichend, weil die Unterstützung dieser Aliase bereits tief im Betriebssystem verankert ist (im klassischen Mac OS im Alias Manager). Ein Alias hat zusätzlich die Fähigkeit, einer auf demselben Dateisystem ("Volume") verschobenen Datei zu 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.
Übersicht
Eigenschaft/Aktion Symbolische Verknüpfung Harter Link Abzweigungspunkt Löschen der symbolischen Verknüpfung/des harten Links/des Abzweigungspunktes... Ziel merkt nichts Referenzzähler wird um 1 reduziert; wenn 0, ist das Ziel logisch gelöscht Ziel wird gelöscht (außer bei Verwendung geeigneter Tools) Verschieben des Ziels Symbolische Verknüpfung wird ungültig Harter Link bleibt gültig Abzweigepunkt wird ungültig Relative Zielangabe möglich (entfällt) unmöglich (wird beim Speichern expandiert) datenträgerübergreifend möglich unmöglich (da Verweis auf denselben Dateideskriptor) möglich Auslesen des Ziels möglich möglich Windows für Dateien ab Vista / Windows 2008; anlegen nur mit Administratorrechten ja nein für Verzeichnisse nein ja Unix für Dateien ja ja (entfällt) für Verzeichnisse ja ja (anlegen als root, jedoch nicht bei allen Dateisystemen) (entfällt) Einzelnachweise
- ↑ [1] Specifying a Namespace Extension's Location
- ↑ [2]Creating Shell Extensions with Shell Instance Objects
- ↑ Junction v1.06
- ↑ Windows 2003 Resource Kit Tools
Weblinks
- NTFS Link Shellextension (englisch) - Kontextmenü-Programm zum Erstellen von harten Links, Abzweigungspunkten und symbolischen Verknüpfungen auf NTFS-Partitionen
- Mark Russinovich: Einblick in den Windows Vista-Kernel: Teil 1. Dateibasierte symbolische Verknüpfungen
- GetFoldersize Freeware zum Auflisten von symbolischen Verknüpfungen, Harten Links und Abzweigungspunkten
Kategorie:- Dateiverwaltung
Wikimedia Foundation.