Im Kontext von NTFS:
MKLINK [[/D] | [/H] | [/J]] Link-Ziel
/D
Erzeugt einen symbolischen Verzeichnislink. Standard ist ein symbolischer Dateilink.
/H
Erstellt einen harten Link anstelle eines symbolischen Links.
/J
Erstellt eine Verzeichnisverknüpfung.
Link
gibt den Namen des neuen symbolischen Links an.
Ziel
gibt den Pfad (relativ oder absolut) an, auf den der neue Link verweist.
Was ist der Unterschied zwischen "mklink /D f1 f2" und "mklink /J f1 f2"?
Eine Verknüpfung ist definitiv nicht dasselbe wie ein symbolischer Verzeichnislink, obwohl sie sich ähnlich verhalten. Der Hauptunterschied besteht darin, dass Verzweigungen auf dem Server verarbeitet werden und symbolische Verzeichnisse auf dem Client, wenn Sie einen entfernten Server betrachten. Siehe auch Matthew's Kommentar zu der Tatsache, dass dies bedeutet, dass symbolische Links auf dem lokalen Dateisystem auf entfernte Dateisysteme zeigen können.
Nehmen wir an, dass Sie auf einem Rechner namens Alice einen Verbindungspunkt c:\myjp
und einen symbolischen Verzeichnislink c:\mysymlink
anlegen, die beide auf c:\Zielordner
zeigen. Solange Sie Alice benutzen, werden Sie keinen großen Unterschied zwischen den beiden Links bemerken. Wenn Sie aber einen anderen Rechner namens Bob benutzen, dann wird der Verbindungspunkt
\\Alice\c$\myjp
auf \\Alice\c$\targetfolder
zeigen.
aber der symbolische Link
\\Alice\c$\mysymlink
wird auf \Bob\c$\Zielordner
zeigen.
(Achtung: Standardmäßig folgt das System Symlinks auf entfernten Volumes nicht, so dass das zweite Beispiel in den meisten Fällen entweder "Datei nicht gefunden" oder "Der symbolische Link kann nicht verfolgt werden, da sein Typ deaktiviert ist.")
Der Unterschied zwischen einem symbolischen Link auf ein Verzeichnis und einem symbolischen Link auf eine Datei besteht einfach darin, dass der eine ein Verzeichnis und der andere eine Datei repräsentiert. Da das Ziel des Links nicht existieren muss, wenn der Link erstellt wird, muss das Dateisystem wissen, ob es den Anwendungen mitteilen soll, dass es ein Verzeichnis ist oder nicht.
Es sollte auch beachtet werden, dass das Erstellen eines symbolischen Links besondere Rechte erfordert (standardmäßig nur für erhöhte Prozesse), während das Erstellen einer Verknüpfung nur Zugriff auf das Dateisystem erfordert.
Komplexes Gerede schadet dem Gehirn - ich mag Diagramme:
Nehmen wir an, dass jeder MyLink
ein symbolischer Link und jeder MyJunc
ein Knotenpunkt ist, der auf Target as created
zeigt.
z.B..
mklink /D MyLink C:\T_Dir` zum Erstellen eines symbolischen Links zum Zielverzeichnis
mklink /J MyJunc C:\T_Dir
zum Erstellen einer Verzeichnisverknüpfung zum Zielverzeichnis
Die Syntax lautet "mklink [/J,/D] [Linkpfad] [Zielpfad]", wie sie auf dem lokalen Rechner eingegeben wird.
link path | target path | When accessed ..
| | (locally) | (remotely)
| | |
C:\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
C:\MyJunc | C:\T_Dir | C:\T_Dir | [leads to remote]
| |
\\Svr\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
\\Svr\MyJunc | C:\T_Dir | *** Must create and point local ***
| |
C:\MyLink | \\Sv2\T_Dir | \\Sv2\T_Dir | Error*1
C:\MyJunc | \\Sv2\T_Dir | *** Error - Must point local ***
| |
\\Svr\MyLink | \\Sv2\T_Dir | Error*1
\\Svr\MyJunc | \\Sv2\T_Dir | *** Must create link using target device ***
Fehler*1 - Wenn Sie den Zugriff auf entfernte symbolische Links auf Ihrem lokalen Rechner freigeschaltet haben, dann würde dies funktionieren ... aber nur auf dem lokalen Rechner, auf dem es freigeschaltet ist
Symbolische Links haben mehr Funktionalität, während Abzweigungen aufgrund ihrer Einschränkungen fast wie ein veraltetes Feature wirken, aber gerade die Sicherheitsimplikationen dieser Einschränkungen sind der Grund, warum eine Abzweigung einem symbolischen Link vorgezogen werden könnte. Das Remote Targeting macht symbolische Links funktioneller, erhöht aber auch ihr Sicherheitsprofil, während Abzweigungen als sicherer angesehen werden können, da sie auf lokale Pfade beschränkt sind. Wenn Sie also einen lokalen Link wollen und mit einem absoluten Pfad leben können, sind Sie mit einer Verknüpfung wahrscheinlich besser dran; andernfalls sollten Sie einen symbolischen Link wegen seiner zusätzlichen Fähigkeiten in Betracht ziehen.
*Die Aussage über den Unterschied in der Geschwindigkeit/Komplexität stammt aus einer nicht verifizierten Aussage im Wikipedia-Eintrag über NTFS-Reparse-Punkte (eine gute Lektüre).
Andere NTFS-Link-Vergleiche
Hier sind einige andere Vergleiche zu diesem Thema, aber diese können irreführend sein, wenn man Abzweigungen in Betracht zieht, weil sie nicht die Vorteile auflisten, die ich oben aufgeführt habe.
Entnommen von hier (eine gute einführende Lektüre)
Von der SS64-Seite auf MKLink
Bemerkungen zur Terminologie
Funktionen sind symbolische Verbindungen
Junctions und symbolische Links tun eigentlich das Gleiche (Punkte reparieren), abgesehen von den bereits erwähnten Unterschieden in der Art und Weise, wie sie verarbeitet werden. Tatsächlich ist eine Junction technisch gesehen ein symbolischer Link, und manchmal wird eine Junction in der Dokumentation als symbolischer Link bezeichnet, wie hier. Das ist also nur etwas, das man bezüglich der Terminologie beachten sollte.
NTFS
Auch wenn der OP dies angibt, ist es wert, darauf hinzuweisen, dass "symbolischer Link" ein sehr allgemeiner Begriff ist, der nicht spezifisch für NTFS ist. Um genau zu sein, geht es bei diesem Vergleich also um NTFS-Verzweigungen gegenüber NTFS-Symbolic Links.