| 

.NET C# Java Javascript Exception

Antwort #A29665 zur Frage #F19946: Unterschied zwischen "subst" und "NTFS Junction Point"

Diese Antwort hat bisher 2 Versionen. Frage #F19946: Unterschied zwischen "subst" und "NTFS Junction Point" - Antwort #A29665


Version 2
12.08.2012 01:02:34
Dies ist die aktuelle Version
Hallo Florian,

schön, mal wieder was von Dir zu lesen! (+1 :-))

Der Unterschied zwischen subst und NTFS junctions ist ganz grundsätzlicher Natur. Beide ermöglichen es, eine Art Alias oder Mapping für einen Ordner einzurichten. Während aber eine NTFS junction eine Funktion des Dateisystems NTFS ist und dieses Mapping direkt in der Struktur des Dateisystems verankert, ist subst eine Funktion des Betriebssystems und löst das Problem, in dem es Windows instruiert, das Mapping beim Zugriff auf das Dateisystem auszuführen.

Daraus und aus der konkreten Implementierung ergeben sich eine Reihe weiterer Unterschiede:

subst:

  • Als Quelle des Mappings können nur (neue) Laufwerkbuchstaben verwendet werden, keine tiefer liegenden Ordner wie bei junctions.
  • Damit können max. 25 Mappings gleichzeitig verwendet werden (Windows kann nur 26 Buchstaben vergeben, und mindestens einer ist immer schon weg.)
  • Funktioniert mit (fast?) allen Windows-Versionen, OS/2 und MS-DOS.
  • Das Mapping-Ziel kann ziemlich beliebig sein, insbesondere auch eine FAT32-Partition oder ein Netz-Laufwerk.
  • Ist per default erst mal nicht persistent. Es gibt mehrere mögliche Ansätze, ein subst-Mapping persistent zu machen. Der vielleicht einfachste ist eine Batch-Datei im Autostart-Ordner, einen komplizierteren und mächtigeren zeigt der Wikipedia-Artikel zu subst (soll angeblich auch für Services klappen, hab selbst keine Erfahrung damit; der Artikel scheint mir auch sonst recht lesenswert zu sein). Aber wie auch immer: die Persistierung ist auf die konkrete Betriebssystem-Instanz oder sogar das Nutzerprofil beschränkt. Mounte ich die Platte in einer anderen Windows-Instanz oder gar in einem anderen OS, ist das Mapping nicht aktiv.


junctions:

  • Quelle des Mappings sind Ordner. Neue Laufwerke können damit keine eingeführt werden.
  • Theoretisch können beliebig viele Mappings gleichzeitig aktiv sein.
  • Funktioniert prinzipiell mit allen Betriebssystemen, die NTFS können. Auch Linuxe können prinzipiell NTFS junctions lesen. Ist wohl aber nicht in allen NTFS-Zugriffsmodulen unter Linux aktiv bzw. implementiert.
  • Die Mapping-Quelle muss ein NTFS-Ordner sein, das Ziel ein lokaler Pfad - geht also nicht mit Zielen auf einem Netz-Laufwerk.
  • Ist immer persistent. Egal, wo ich die Partition mounte - wenn das jeweilige OS NTFS inkl. junctions unterstützt, ist das Mapping aktiv.


Soweit zu den Unterschieden. Beim Recherchieren hab ich noch zwei nützliche Links gefunden:

Dieser Microsoft-KB-Artikel gibt u.a. auch Empfehlungen zur Verwendung von junctions. Habe sie selbst nicht ausprobiert, aber sie scheinen mir sinnvoll. Nach meiner bescheidenen Erfahrung sind junctions nützlich, aber gefährlich wg. der unklaren bis nicht vorhandenen Unterstützung in einer Reihe von Programmen einschließlich des Windows-Explorers (zumindest bis XP). Es ist schwierig vorherzusagen, was passiert, wenn ein Programm den source-Ordner der junction löscht oder ihn sonstwie nutzt. Ich hab mir mal eine Windows-XP-Installation beschädigt, indem ich den Ordner, in dem die Windows-Updates abgelegt werden, aus Platzmangel auf eine andere Partition verschoben und per junction am alten Ort eingebunden habe. Blöderweise hatte wohl der Programmierer des Windows-Update-Clients noch nie was von junctions gehört, jedenfalls war nach dem nächsten Update der Ordner leergeputzt!

Neben junctions kann NTFS auch noch hard links für Dateien und symbolische Links für Dateien und Verzeichnisse. Dieser Blog-Post erklärt die Unterschiede und wie man die einzelnen Varianten mit mklink erzeugt.
Matthias Hlawatsch 13,2k 4 9
Version 1
12.08.2012 00:52:35
Hallo Florian,

schön, mal wieder was von Dir zu lesen! (+1 :-))

Der Unterschied zwischen subst und NTFS junctions ist ganz grundsätzlicher Natur. Beide ermöglichen es, eine Art Alias oder Mapping für einen Ordner einzurichten. Während aber eine NTFS junction eine Funktion des Dateisystems NTFS ist und dieses Mapping direkt in der Struktur des Dateisystems verankert, ist subst eine Funktion des Betriebssystems und löst das Problem, in dem es Windows instruiert, das Mapping beim Zugriff auf das Dateisystem auszuführen.

Daraus und aus der konkreten Implementierung ergeben sich eine Reihe weiterer Unterschiede:

subst:

  • Als Quelle des Mappings können nur (neue) Laufwerkbuchstaben verwendet werden, keine tiefer liegenden Ordner wie bei junctions.
  • Damit können max. 25 Mappings gleichzeitig verwendet werden (Windows kann nur 26 Buchstaben vergeben, und mindestens einer ist immer schon weg.)
  • Funktioniert mit (fast?) allen Windows-Versionen, OS/2 und MS-DOS.
  • Das Mapping-Ziel kann ziemlich beliebig sein, insbesondere auch eine FAT32-Partition oder ein Netz-Laufwerk.
  • Ist per default erst mal nicht persistent. Es gibt mehrere mögliche Ansätze, ein subst-Mapping persistent zu machen. Der vielleicht einfachste ist eine Batch-Datei im Autostart-Ordner, einen komplizierteren und mächtigeren zeigt der Wikipedia-Artikel zu subst (soll angeblich auch für Services klappen, hab selbst keine Erfahrung damit; der Artikel scheint mir auch sonst recht lesenswert zu sein). Aber wie auch immer: die Persistierung ist auf die konkrete Betriebssystem-Instanz oder sogar das Nutzerprofil beschränkt. Mounte ich die Platte in einer anderen Windows-Instanz oder gar in einem anderen OS, ist das Mapping nicht aktiv.


junctions:

  • Quelle des Mappings sind Ordner. Neue Laufwerke können damit keine eingeführt werden.
  • Theoretisch können beliebig viele Mappings gleichzeitig aktiv sein.
  • Funktioniert prinzipiell mit allen Betriebssystemen, die NTFS können. Auch Linuxe können prinzipiell NTFS junctions lesen. Ist wohl aber nicht in allen NTFS-Zugriffsmodulen unter Linux aktiv bzw. implementiert.
  • Die Mapping-Quelle muss ein NTFS-Ordner sein, das Ziel ein lokaler Pfad - geht also nicht mit Zielen auf einem Netz-Laufwerk.
  • Ist immer persistent. Egal, wo ich die Partition mounte - wenn das jeweilige OS NTFS inkl. junctions unterstützt, ist das Mapping aktiv.


Soweit zu den Unterschieden. Beim Recherchieren hab ich noch zwei nützliche Links gefunden:

Dieser Microsoft-KB-Artikel gibt u.a. auch Empfehlungen zur Verwendung von junctions. Habe sie selbst nicht ausprobiert, aber sie scheinen mir sinnvoll. Nach meiner bescheidenen Erfahrung sind junctions nützlich, aber gefährlich wg. der unklaren bis nicht vorhandenen Unterstützung in einer Reihe von Programmen einschließlich des Windows-Explorers. Es ist schwierig vorherzusagen, was passiert, wenn ein Programm den source-Ordner der junction löscht. Ich hab mir mal eine Windows-XP-Installation beschädigt, indem ich den Ordner, in dem die Windows-Updates abgelegt werden, auf eine andere Partition verschoben und per junction am alten Ort eingebunden habe. Blöderweise hatte wohl der Programmierer des Windows-Update-Clients noch nie was von junctions gehört, jedenfalls war nach dem nächsten Update der Ordner leergeputzt!

Neben junctions kann NTFS auch noch hard links für Dateien und symbolische Links. Dieser Blog-Post erklärt die Unterschiede und wie man die einzelnen Varianten mit mklink erzeugt.
Matthias Hlawatsch 13,2k 4 9