Symbolische Verknüpfung


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 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>   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. [1] Specifying a Namespace Extension's Location
  2. [2]Creating Shell Extensions with Shell Instance Objects
  3. Junction v1.06
  4. Windows 2003 Resource Kit Tools

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Junction Point — 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… …   Deutsch Wikipedia

  • Softlink — 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… …   Deutsch Wikipedia

  • Symbolic 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… …   Deutsch Wikipedia

  • 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… …   Deutsch Wikipedia

  • Ext2 — Hersteller Rémy Card Vollständige Bezeichnung Second extended file system Erstveröffentlichung Januar 1993 (Linux) Partitionskennung Apple UNIX SVR2 (Apple Partition Map) 0x83 (Master Boot Record) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT …   Deutsch Wikipedia

  • Ext2fs — ext2 Hersteller Rémy Card Vollständige Bezeichnung Second extended file system Erstveröffentlichung Januar 1993 (Linux) Partitionskennung Apple UNIX SVR2 (Apple Partition Map) 0x83 (Master Boot Record) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT …   Deutsch Wikipedia

  • Second extended Filesystem — ext2 Hersteller Rémy Card Vollständige Bezeichnung Second extended file system Erstveröffentlichung Januar 1993 (Linux) Partitionskennung Apple UNIX SVR2 (Apple Partition Map) 0x83 (Master Boot Record) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT …   Deutsch Wikipedia

  • ext2 — Hersteller Rémy Card Vollständige Bezeichnung Second extended file system Erstveröffentlichung Januar 1993 (Linux) Partitionskennung Apple UNIX SVR2 (Apple Partition Map) 0x83 (Master Boot Record) EBD0A0A2 B9E5 4433 87C0 68B6B7269 …   Deutsch Wikipedia

  • /dev — Gerätedatei (von engl. device file) sind spezielle Dateien, die unter fast allen Unix Derivaten und vielen anderen Betriebssystemen genutzt werden. Sie ermöglichen eine einfache Kommunikation zwischen Userspace, zum Beispiel gewöhnlichen… …   Deutsch Wikipedia

  • /dev/zero — Gerätedatei (von engl. device file) sind spezielle Dateien, die unter fast allen Unix Derivaten und vielen anderen Betriebssystemen genutzt werden. Sie ermöglichen eine einfache Kommunikation zwischen Userspace, zum Beispiel gewöhnlichen… …   Deutsch Wikipedia