Hardlinks & Junctions |
HardlinksEin Hardlink ist im Gegensatz zu Softlink, dies sind eingene Dateien im Dateisystem mit der Endung *.lnk, ein weiterer Verweis auf die jeweilige Datei. Es wird mit einem Hardlink ein weiter Verzeichniseintrag erstellt. Erst wenn alle Verzeichniseinträge (Hardlinks) zu dieser Datei gelöscht wurden und ebenfalls der 1. Eintrag wird die Datei entgültig gelöscht. Windows bietet dies auf der CMD-Shell Ebene an. Mit dem Befehl "fsutil hardlink create NeuerDateiName AlterDateiName" wird ein Hardlink erzeugt. Einen Haken hat das Ganze. fsutil geht nur als Administrator. Hardlinks können nur auf der selben Festplatten-Partition angelegt werden Junctions
Ähnlich verhält es sich mit Junctions. Dies sind weitere Einträge über ganze Ordner (Erstellen von symbolischen NTFS Orderverknüpfungen).
Junctions können über Festplatten und Partitions-Grenzen angelegt werden.
Programme:
ln von Hermann Schinagl macht die auf der CMD-Shell excellent. Die Datei Linkd.exe erledigt dies für Junktions auf Shell Ebene genauso zuverlässig aber nicht per Mausklick. Daselbe kann Junctions.exe oder Linkmagic
Wie wird Linkd bzw Junctions angewendet: z.B Inhalt von c:\tmp soll nochmal unter c:\zeiteise zu erreichen sein. Linkd Neuerpfad-Name Originalpfad Linkd c:\zeitweise c:\tmp
Junction wieder löschen Linkd c:\zeitweise /D
Probleme: 1.) Leerzeichen im Pfadnamen Wenn ein Leerzeichen vorkommt muss der Pfad gekapselt werden Linkd "c:\neues am PC" c:\tmp
2.) Pfadnamen über mehrere Unterordner
Linkd kann immer nur den letzen Ordner in Pfad als Junktion anlegen. Ggf. muss vorher über md der Ordner-Pfad angelegt werden md c:\Gebaeude1\Stock3\Raum1 Linkd c:\Gebaeude1\Stock3\Raum1\tmp c:\tmp
3.) Deutsche Umlaute und ß Noch Problematischer wird es mit den deutschen Sonderzeichen ä,ö,ü & ß. Hier steigt Linkd ebenfalls aus. Lösung: Die Kurzschreibweise von DOS verwenden. Mittels eines VBS-Scriptes
Option Explicit
Dim s, sOriginal, sNeuerHarrdlink, fso, f, wsh 'On Error Resume Next sOriginal = "c:\gebäudekomplex" 'Ziel-Ordner sNeuerHarrdlink = "c:\gx" 'Neue Junktion Set wsh = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(sOriginal) If Err.Number > 0 Then sNeuerHarrdlink = Err.Description & vbCrLF & sOriginal wsh.Popup sNeuerHarrdlink, 10, "Parameter-Fehler", vbOKOnly + vbExclamation WScript.Quit End IfSet f = fso.GetFolder(sNeuerHarrdlink) MsgBox "Typ: " & f.Type If Err.Number = 0 Then wsh.Popup sNeuerHarrdlink, 10, "Parameter-Fehler", vbOKOnly + vbExclamation WScript.Quit End IfsOriginal = f.ShortPath s = """c:\Programme\Windows Resource Kits\Tools\Linkd"" " & sNeuerHarrdlink & " " & sOriginal s = wsh.run(s, 1 , True)
|