2011-10-05 03:28:14 +0000 2011-10-05 03:28:14 +0000
412
412

"directory junction" vs "directory symbolic link"?

Nel contesto del NTFS:

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

/D Crea un link simbolico della directory. L'impostazione predefinita è un link simbolico di file. /H Crea un link rigido invece di un link simbolico. /J Crea una giunzione di directory. Link specifica il nuovo nome del link simbolico.
Target specifica il percorso (relativo o assoluto) a cui si riferisce il nuovo collegamento.

  1. Un giunto di directory non è esattamente la stessa cosa di un collegamento simbolico di directory?

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

Risposte (3)

382
382
382
2011-10-05 03:43:56 +0000

Un incrocio non è sicuramente la stessa cosa di un collegamento simbolico di una directory, anche se si comportano in modo simile. La differenza principale è che, se si sta guardando un server remoto, giunzioni vengono elaborate sul server e collegamenti simbolici di directory vengono elaborati sul client. Si veda anche il commento di Matthew sul fatto che questo significa che i collegamenti simbolici sul file system locale possono puntare a file system remoti.

Supponiamo che su una macchina chiamata Alice si debba mettere un punto di giunzione c:\myjp e un link simbolico di directory c:\mysymlink, entrambi che puntano a c:\targetfolder. Mentre si usa Alice non si noteranno molte differenze tra di loro. Ma se state usando un'altra macchina chiamata Bob, allora il punto di giunzione

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

ma il link simbolico

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

(Caveat: per default, il sistema non segue i link simbolici sui volumi remoti, quindi nella maggior parte dei casi il secondo esempio risulterà in realtà o “File Not Found” o “Il link simbolico non può essere seguito perché il suo tipo è disabilitato. ”)

La differenza tra un collegamento simbolico di una directory e un collegamento simbolico di un file è semplicemente che uno rappresenta una directory e l'altro un file. Poiché l'obiettivo del collegamento non deve necessariamente esistere al momento della creazione del collegamento, il file system deve sapere se dire alle applicazioni che si tratta o meno di una directory.

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

65
65
65
2015-10-22 19:03:16 +0000

Parlare in modo complesso fa male al cervello – Mi piacciono i grafici:

Si supponga che qualsiasi MyLink sia un collegamento simbolico e che qualsiasi MyJunc sia una giunzione che punti a Target as created.

ad es.

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

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

Dove la sintassi è mklink [/J,/D] [link path] [target path] come digitata 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***
``` &001 


Errore\*1 - Se si sblocca l'accesso ai collegamenti simbolici remoti sulla macchina locale, allora questo funzionerebbe ... ma solo sulla macchina locale dove è sbloccato
55
55
55
2018-02-02 16:30:06 +0000

As ligações simbólicas têm mais funcionalidade, enquanto os cruzamentos quase parecem ser uma característica herdada devido às suas limitações, mas as implicações dessas limitações em termos de segurança são especificamente a razão pela qual um cruzamento pode ser preferido a um elo simbólico. O estabelecimento de objectivos circunscritos torna as ligações simbólicas mais funcionais, mas também aumenta o seu perfil de segurança, ao passo que os cruzamentos podem ser considerados mais seguros por estarem limitados a trajectos locais. Portanto, se você quer uma ligação local e pode viver com um caminho absoluto, provavelmente está melhor com um entroncamento; caso contrário, considere uma ligação simbólica pelas suas capacidades adicionais.

** A declaração da diferença em velocidade/complexidade vem de uma declaração não verificada na entrada Wikipedia em pontos de reparação NTFS (uma boa leitura). *


Outras comparações de ligações NTFS

Aqui estão algumas outras comparações sobre o tema, mas estas podem ser enganosas quando se consideram os cruzamentos porque não listam os benefícios que enumero acima. Extraído daqui (uma boa leitura introdutória)

A partir de SS64 página em MKLink


** Comentários sobre Terminologia**

Junctions are Symbolic Links

Junctions and Symbolic links are really doing the same thing in the same way (reparse points), para além das diferenças na forma como são processados. Na verdade, tecnicamente, uma junção é uma ligação simbólica e, por vezes, a documentação pode chamar a uma junção uma ligação simbólica, como é o caso aqui . Portanto, isto é apenas algo a ter em conta no que diz respeito à terminologia.

NTFS

Mesmo que o PO especifique isto, vale a pena salientar que “ligação simbólica” é um termo muito geral que não é específico da NTFS. Assim, para ser específico, esta comparação é sobre NTFS Junctions vs. NTFS Symbolic Links.