NTFS Symbolic Link, Hard Link, Junction

Hallo zusammen,

Das NTFS (New Technology File System) wurde mit Windows NT eingeführt.

NTFS Version 
Betriebsystem
Release
v1.0
NT 3.1
1993
v1.1
NT 3.5
1994
v1.2
NT 3.51, NT 4.0
1995
v3.0
Win 2000
2000
v3.1
Windows XP, Win2003, Vista, Win 2008, Win 7
2001

Nun zu den verschiedenen Arten von Links, welche auf diesem Dateisystem möglich sind.

Verknüpfung (Shortcut)
Ein Datei die auf eine andere Datei oder Ordner zeigt.
Shortcuts sind sehr klein und bleiben bestehen, wenn das Zielobjekt gelöscht oder umbenannt wird.
Die verknüpfung ist dann wertlos, weil das Zielobjekt nicht mehr gefunden wird.

Symbolischer Link (Symbolic Link)
Ein Symbolischer Link ist wie eine Verknüpfung, aber es wird keine Datei angelegt sondern die Verknüpfung wird im Filesystem angelegt. Simlinks können für Dateien oder Verzeichnisse angelegt werden und sogar für Netzwerkpfade.

Harter Link (Hard link)
Harte Links sind Links (MFT Eintrag) zu einer Datei ohne zusätzlichen Speicherplatz zu belegen.
Zeigt ein Hardlink auf eine Datei und man löscht nun die Orginal Datei, dann behält der Hardlink die Daten. Ein Hardlink kann nur nur auf derselben Partition angelegt werden wo das File auch liegt.

Verbindung (Junction)
Eine Junction ist ein Hardlink für Verzeichnisse.
Anders als Hardlinks können Junctions auf anderen Partitionen angelegt werden.
Junctions werden im Filesystem angelegt und benötigen so keinen Speicherplatz. Vom Betriebssystem werden diese wie lokale Verzeichnisse behandelt.

Symbolic Links und Junctions können mit dem Kommandozeilentool mklink angelegt werden.

mklink /D /H /J [LINK NAME] [TARGET]
   File Symbolic Link
/D Directory Symbolic Link
/H Hard Link (File Hard link)
/J Junction (Directory Hard link)

Praxis

Ich habe das mal in einem Testordner vorbereitet.

 

Name Beschreibung
Windows Junction to C:\Windows
WindowsD Directory Symlink auf C:\Windows
a.txt Text Datei
b.txt File Symlink auf D:\Links\a.txt
c.txt Hardlink auf D:\Links\a.txt
Verknüpfung a.txt Verknüpfung (Shortcut) auf D:\Links\a.txt

Im Windows Explorer wird der Hardlink nicht optisch gekennzeichnet (c.txt)

Auch im Command Promt ist der Hardlink nicht erkennbar. Dis Symlinks und Junctions sind erkennbar.

Mit dir /al werden nur Symlinks oder Junctions angezeigt.

Ein Hardlink kann nur mit dem Dienstprogramm fsutil angezeigt werden.

fsutlil hardlink list [Dateiname]

Wird die Datei a.txt geöffnet, erscheint der Inhalt von a.txt.

Nun verändere ich die a.txt

Nun ist auch der Inhalt in c.txt geändert.

Nun lösche ich die Datei a.txt - nun erhält der Hardlink das "Sicherheitschloss".

Öffnet man nun die Datei c.txt ist der Inhalt von a.txt noch vorhanden.

Mit dem Tools NTFSLinksView von www.nirsoft.net können die Symlinks und Junctions aufgelistet werden.

Tools
-Junction
http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx
-Link Shell Extension
http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
-NTFSLinksView
http://www.nirsoft.net/utils/ntfs_links_view.html

Achtung:

Junctions nicht mit dem Windows Explorer löschen, sonst wird das Ziel gleich mitgelöscht. Hier sollte das im Command Promt rmdir benutzt werden.

Grüsse
Andres Bohren