Hard-/Softlinks – Teil 3 (Windows): Junctions und symbolische Links gibt es auch noch.

Wie im Abschnitt für Linux gezeigt, gibt es auch unter Windows im NTFS-Filesystem Hardlinks. Zusätzlich bietet Windows noch symbolische Links, Junctions (Verbindungen) und natürlich die “Verknüpfung“ .

Die Verknüpfung dürfte jedem bekannt sein und so beschränke ich mich hier auf den Verweis zu Teil1 und den Hinweis: „Rechte Maustaste klicken -> ziehen –> Verknüpfung hier erstellen“.

Wenden wir uns den interessanteren Funktionen zu.

Zum Erstellen von Hardlinks gibt es 2 Möglichkeiten – den Befehl fsutil und mklink.

Ein kleines Beispiel mit fsutil:
03_Win-Link_01

Ein Hardlink mit mklink:
03_Win-Link_02

Hier der Beweis eines Hardlinks an Hand der FileID:
03_Win-Link_03

Junction und symbolischer Link:
Als weitere Link-Arten gibt es den symbolischen Link und die Junction.
Auf den ersten Blick funktionieren beide gleich – der Unterschied steckt aber im Detail
(Ergänzug siehe Ende Beitrag)

Erklärung:
Eine Junction beinhaltet einen festen, kompletten Pfad, der symbolische Link ist eher mit einer relativen Pfadangabe zu vergleichen.
Beides hat Vor- und Nachteile und somit gibt es Einsatzbereiche, bei denen man ausschließlich eine der beiden Varianten einsetzen kann.

Bei einem lokalen Datenträger, wie z.B.: der Festplatte, ist es meiner Meinung nach egal, was man einsetzt. Es wird mit beiden funktionieren.
(Ergänzug siehe Ende Beitrag)

Bei einem Wechseldatenträger, wie z.B.: einem USB-Stick, wird es dann schon interessanter.
In diesem Beispiel wird auf einem USB-Stick, welcher aktuell den Laufwerksbuchstaben G: zugewiesen hat, ein Verzeichnis „test“ angelegt.
Auf dieses Verzeichnis „test“ wird je eine Junction (Name „test-junktion“) und ein symbolischer Link (Name „test-symlink“) erzeugt.
03_Win-Link_04a
Wie man sieht, wir die Junction mit einem kompletten Pfad angegeben, der symbolische Link nur mit den relativen Pfad.

Jetzt ändern wir in der Computerverwaltung den Laufwerksbuchstaben des USB-Sticks von G: nach H: …
03_Win-Link_05a 03_Win-Link_05b 03_Win-Link_05c
… und schauen uns die Ausgabe von „dir“ noch einmal an.

Wir sehen, dass die Junction weiterhin auf das Laufwerk G: verweist.
03_Win-Link_06
Das bedeutet, dass der „Link“ mit dem Namen test-junktion nicht funktionieren wird, da er auf ein Laufwerk verweist, dass es aktuell nicht mehr gibt.
Der symbolische Link „test-symlink“ funktioniert aber immer noch.

Es gibt aber auch Situationen, in denen die umgekehrte Verhaltensweise benötigt wird – z.B.: bei einer Freigabe auf einem File-Server.

Ich lege jetzt auf einer Freigabe (auf dem Server im Verzeichnis „C:\Versuch“) genau die gleichen Ordner mit den gleichen Verküpfungen per Junktion und symbolischen Link an.
Das Ergebnis zeigt auf dem Server das gleiche Resultat.
03_Win-Link_07
Man darf sich von der Bezeichnung „<VERBINDUNG>“ nicht täuschen lassen, es handelt sich noch immer um eine Junction. In diesem Fall ist die unterschiedliche Ausgabe den unterschiedlichen Betriebssystemen geschuldet (Server = Windows Server 2008, Client = Windows 8.1).

Wenn man aber jetzt die Freigabe auf einem Cient aufruft (Egal ob über den Pfad oder als Netzlaufwerk) sieht das Ergebnis so aus.

Beispiel 1: Aufruf über Netzwerkpfad
03_Win-Link_08a

Beispiel 2: Verbundenes Netzlaufwerk auf W:
03_Win-Link_08b

Man darf sich jetzt nur nicht verwirren lassen.
Die Pfadangabe hinter „test-junktion“ zeigt das Laufwerk „C:“ an. Aber das muss so sein, denn bei einem Doppelklick auf diese Junction muss der SERVER die Pfadangabe interpretieren und nicht der Client. Die Anweisung, in den Pfad „C:\Versuch\test“ zu wechseln wird demnach vom Server ausgeführt und dieser stellt uns in der Freigabe die neue „Ansicht“ bereit.
Der symbolische Link funktioniert hier nicht.
Um Probleme, durch die Verwendung relativer Pfade (vom Client), zu vermeiden, ist dieser Linktyp grundsätzlich deaktiviert und wird mit einer entsprechenden Fehlermeldung bestätigt.
03_Win-Link_09

—–
Ergänzung zu Junction
Peter hat mir eben noch einen Hinweis zu „Junction“ gegeben, der durchaus wichtig zu erwähnen ist.
Ein normaler User darf nur Junctions auf Verzeichnisse anlegen.
Für Hardlinks und symbolische Links benötigt man Adminrechte.
Danke, Peter, für den wichtigen Hinweis.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*