"Giunzione directory" vs "collegamento simbolico della directory"?

MKLINK [[/D] | [/H] | [/J]] Link Target

/D Crea un collegamento simbolico della directory. Il valore predefinito è un collegamento simbolico del file.
/H Crea un collegamento duro anziché un collegamento simbolico.
/J Crea un collegamento di directory.
Link specifica il nuovo nome di collegamento simbolico.
Target specifica il path (relativo o assoluto) di cui si riferisce il nuovo collegamento.

  1. Non è una giunzione di directory esattamente la stessa cosa di un collegamento simbolico della directory ?

    Qual è la differenza tra mklink /D f1 f2 e mklink /J f1 f2 ?

  2. Poiché una "directory" è in realtà solo un file , quale sarebbe la differenza tra un collegamento simbolico della directory e un collegamento simbolico di un file?

Un giunzione non è sicuramente la stessa cosa di un collegamento simbolico della directory, anche se si comportno allo stesso modo. La differenza principale è che se stai guardando un server remoto, i giunzioni vengono elaborati al server e i collegamenti simbolici vengono trattati al client . Vedi anche il commento di Matthew sul fatto che ciò significa che i collegamenti simbolici nel file system locale possono indicare i file system remoti.

Supponiamo che su una macchina denominata Alice c:\myjp mettere un punto di giunzione c:\myjp e un collegamento simbolico c:\mysymlink , entrambi puntando a c:\targetfolder . Mentre stai utilizzando Alice, non si nota molta differenza tra di loro. Ma se stai utilizzando un'altra macchina chiamata Bob, allora il punto di giunzione

\\Alice\c$\myjp punterà a \\Alice\c$\targetfolder

ma il collegamento simbolico

\\Alice\c$\mysymlink punterà a \\Bob\c$\targetfolder

(Caveat: per impostazione predefinita, il sistema non segue i collegamenti simbolici sui volumi remoti, quindi nella maggior parte dei casi il secondo esempio comporterà effettivamente "File non trovato" o "Il collegamento simbolico non può essere seguito perché il suo tipo è distriggersto." )

La differenza tra un collegamento simbolico della directory e un collegamento simbolico di un file è semplicemente quello che rappresenta una directory e uno rappresenta un file. Poiché l'objective del collegamento non deve esistere quando il collegamento viene creato, il file system deve sapere se indica le applicazioni che è una directory o less.

Va inoltre notato che la creazione di un collegamento simbolico richiede un privilegio speciale (per impostazione predefinita, disponibile solo per processi elevati), mentre la creazione di una giunzione richiede solo l'accesso al file system.

Il discorso complesso fa male al cervello – mi piacciono i grafici:

Supponiamo che qualsiasi MyLink sia un collegamento simbolico e qualsiasi MyJunc è una giunzione che punta a Target as created .

per esempio

mklink /D MyLink C:\T_Dir per la creazione di un collegamento simbolico alla directory di destinazione

mklink /J MyJunc C:\T_Dir per creare una giunzione directory nella directory di destinazione

Dove la syntax è mklink [/J,/D] [link path] [target path] come digitato sulla macchina locale


  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 *** 

Errore * 1 – Se hai sbloccato l'accesso a collegamenti simbolici remoti sulla tua macchina locale, allora questo functionrebbe ma solo sulla macchina locale in cui è sbloccato