Der Unterschied zwischen symbolischen Verknüpfungen und harten Verknüpfungen in Windows
In diesem Artikel werden die beiden unterschiedlichen Arten von Verknüpfungen vorgestellt und in einem kleinen Experiment wird gezeigt, warum es zu Missverständnissen kommen kann.Unterschied zwischen symbolischen und harten Verknüpfungen
Eine symbolische Verknüpfung ist eine Datei, die auf eine andere Datei verweist.Es handelt sich dabei lediglich um eine Referenz auf die Zieldatei. Wird die Zieldatei verschoben oder gelöscht, verweist die Verknüpfung ins Leere. Die Verknüpfung ist nicht gleichwertig zum eigentlichen Eintrag im Dateisystem der referenzierten Datei. Technisch bedeutet das, dass die Verknüpfung nur eine Pfadangabe zu der Datei enthält. Ein symbolische Verknüpfung ist, wie Sie gleich sehen werden, in Windows sofort als solche erkennbar.
Ein wenig anders sieht es bei harten Verknüpfungen aus. Genau wie eine symbolische Verknüpfung verweisen sie auf eine andere Datei mit dem Unterschied, dass sie keinen Verweis auf den Pfad der Datei enthalten, sondern auf die Datei selbst. Damit wird ein weiterer Name für die Datei etabliert, der nicht vom Originalnamen der Datei zu unterscheiden ist. Wird die Originaldatei verschoben, funktioniert die Verknüpfung immer noch. Das bedeutet aber, dass Sie, um eine Datei wirklich zu löschen, sämtliche harten Verknüpfungen löschen müssen. Erst dann sind Sie die Datei wirklich los.
Das erklärt auch, warum der Windows Explorer Hardlinks nicht von den Originaldateien unterscheiden kann. Ich möchte das an einem kleinen Beispiel zeigen.
Experiment
Ich habe eine Textdatei erstellt mit dem Namen test.txt. Die Datei ist 17 KB groß. Nun erstelle ich zehn Hardlinks, die auf diese Datei verweisen. Wenn Sie dem Beispiel folgen wollen, öffnen Sie die Kommandoeingabe, indem Sie die Windowstaste und R drücken und "cmd" eingeben.
Öffnen der Kommandozeile mittels "cmd" (Bild: Selbst erstellt)
Um eine harte Verknüpfung zu erstellen, geben Sie das folgende Kommando ein:
mklink /h hardlink.txt original.txt
Erstellen von Hardlinks (Bild: Selbst erstellt)
Auf dem nebenstehenden Bild sehen Sie, dass ich im Verzeichnis c:\experiment zwei Hardlinks auf die Datei test.txt erstellt habe. Nach diesem Muster erstelle ich acht weitere Hardlinks auf diese Datei. Das Ergebnis möchten wir uns nun mit dem Befehl DIR und dem Windows-Explorer ansehen. Auf beiden Bildern erkennen Sie, dass Windows dieselbe Größe anzeigt wie die der Originaldatei, obwohl es sich technisch nur um eine Verknüpfung handelt.
Das Kommando DIR zeigt die Hardlinks falsch an (Bild: Selbst erstellt)
Und der Windows-Explorer ebenfalls (Bild: Selbst erstellt)
Dann wollen wir jetzt einmal die Gegenprobe machen. Mit dem folgenden Kommando können Sie symbolische Verknüpfungen erstellen.
mklink softlink.txt original.txt
Erstellen von Softlinks (Bild: Selbst erstellt)
Wie vorhin habe ich mir zwei symbolische Verknüpfungen erstellt. Weitere acht werden folgen und dann sehen wir uns den Unterschied in der Anzeige an. Das Kommando ist dasselbe wie bei der Erstellung von harten Verknüpfungen, nur dass "\h" fehlt.
Auf den beiden folgenden Bildern sehen Sie den Unterschied. Das Kommando DIR markiert die symbolischen Links mit "<SYMLINK>"; eine Größe wird nicht angezeigt. Stattdessen sehen wir hinter dem Namen der Verknüpfung, auf welche Datei sie verweist. Die Gesamtgröße des Verzeichnisses ist die Summe der Größen der Originaldatei und der harten Verknüpfungen.
Symbolische Verknüpfungen werden von dem Kommando DIR korrekt erkannt (Bild: Selbst erstellt)
Auch der Windows-Explorer erkennt symbolische Links als solche (Bild: Selbst erstellt)
Im Windows-Explorer zeigt sich uns ein ähnliches Bild. Symbolische Verknüpfungen werden mit einem kleinen Pfeil im Symbol markiert und haben eine Größe von 0 KB, was nicht ganz korrekt ist. Tatsächlich beträgt die Größe wenige Bytes. Windows rundet hier ab.
Ich denke, dass Ihnen die Problematik durch dieses kleine Experiment klar geworden ist. Dass der Windows-Explorer nicht in der Lage ist, harte Links richtig zu erkennen, liegt daran, dass sie technisch gesehen "richtige" Dateien sind. Windows hat hier einfach keine Möglichkeit, einen Unterschied zu erkennen, außer die Programmierer von Microsoft würden noch einen zusätzlichen Mechanismus einbauen, was sie aber offensichtlich bislang noch nicht getan haben, denn in Windows 8 gibt es noch dieselbe Problematik.
Im Allgemeinen ist der Unterschied für Sie nicht von großer Bedeutung. Normalerweise werden auch bevorzugt symbolische Verknüpfungen eingesetzt. So sind bspw. die Verknüpfungen auf dem Desktop oder im Startmenü auf Programme solche symbolischen Links.
Dennoch kann diese Sache auch zu Missverständnissen führen. Das prominenteste Beispiel ist der enorm aufgebläht erscheinende Ordner WinSxs in Windows.
Häufiges Missverständnis
Der Ordner WinSxs kann mehrere Gigabyte Speicher fressen und wird im Windows-Explorer als riesiges Speichermonstrum angezeigt. Sie können sich aber denken, was nun folgt: Der Ordner WinSxs ist überhaupt nicht so groß, wie der Windows Explorer behauptet, denn er enthält zum größten Teil nur harte Verknüpfungen auf andere Dateien. Und wie wir gerade gelernt haben, interpretiert der Windows-Explorer diese harten Links als eigenständige Dateien, was aber eine falsche Interpretation ist.
Bildquelle:
Larry Ewing, Wikipedia
(Herzlichen Glückwunsch: Linux wird in 2011 stolze 20 Jahre alt)