No contexto do NTFS:
**
MKLINK [[/D] | [/H] | [/J]] Link Target
***
/D
Cria uma ligação simbólica de directório. Por defeito é uma ligação simbólica de ficheiro.
/H
Cria um elo duro em vez de um elo simbólico.
/J
Cria uma Junção de Directório.
Link
especifica o novo nome simbólico da ligação.
Target
especifica o caminho (relativo ou absoluto) a que a nova ligação se refere.
Qual's a diferença entre mklink /D f1 f2
e mklink /J f1 f2
?
Uma junção não é definitivamente a mesma coisa que uma ligação simbólica de directório, embora se comportem de forma semelhante. A principal diferença é que, se estiver a olhar para um servidor remoto, junções são processadas no servidor e ligações simbólicas de directório são processadas no cliente. Ver também o comentário de Matthew's sobre o facto de que isto significa que as ligações simbólicas no sistema de ficheiros local podem apontar para sistemas de ficheiros remotos.
Suponhamos que numa máquina chamada Alice se colocaria um ponto de junção c:\myjp
e uma ligação simbólica de directório c:\mysymlink', ambos apontando para
c:\targetfolder'. Enquanto você'está a utilizar Alice, você ganhou'não notou muita diferença entre eles. Mas se você'estiver a utilizar outra máquina chamada Bob, então o ponto de junção
"Alice c$myjp" apontará para "Alice c$targetfolder".
mas a ligação simbólica
Alice "mysymlink" apontará para "Bobc$targetfolder".
(Caveat: por defeito, o sistema não't segue ligações simbólicas em volumes remotos, por isso, na maioria dos casos, o segundo exemplo resultará realmente em "File Not Found" ou "A ligação simbólica não pode ser seguida porque o seu tipo está desactivado.")
A diferença entre uma ligação simbólica de directório e uma ligação simbólica de ficheiro é simplesmente que um representa um directório e um representa um ficheiro. Uma vez que o alvo da ligação não't precisa de existir quando a ligação é criada, o sistema de ficheiros precisa de saber se deve dizer às aplicações que é ou não uma directoria.
Deve também notar-se que a criação de uma ligação simbólica requer privilégios especiais (por defeito, apenas disponível para processos elevados) enquanto que a criação de uma junção apenas requer acesso ao sistema de ficheiros.
A conversa complexa magoa o cérebro -- gosto de gráficos:
Assumir que qualquer "MyLink" é uma ligação simbólica e qualquer "MyJunc" é uma junção que aponta para "Target as created".
por exemplo
mklink /D MyLink C:\T_Dir
por criar um link simbólico para o directório alvo
mklink /J MyJunc C:\T_Dir
para criar uma junção de directório para o directório de destino
Onde a sintaxe é mklink [/J,/D] [link path] [caminho de ligação] [caminho alvo]
como digitado na máquina local
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 ***
Erro*1 - Se desbloqueou o acesso a ligações simbólicas remotas na sua máquina local, então isto funcionaria... mas apenas na máquina local onde...##39;s desbloqueou
As ligações simbólicas têm mais funcionalidade, enquanto as junções quase parecem ser uma característica herdada devido às suas limitações, mas as implicações de segurança destas limitações são especificamente a razão pela qual uma junção pode ser preferida em vez de uma ligação simbólica. Apontar para o alvo torna as ligações simbólicas mais funcionais, mas também aumenta o seu perfil de segurança, enquanto que os cruzamentos podem ser considerados mais seguros por estarem limitados a caminhos locais. Assim, se quiser uma ligação local e puder viver com um caminho absoluto, você' provavelmente está melhor com um cruzamento; caso contrário, considere uma ligação simbólica pelas suas capacidades adicionais.
*A declaração da diferença de velocidade/complexidade vem de uma declaração não verificada na entrada da Wikipédia sobre 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't listam os benefícios que enumero acima.
Tirado daqui (uma boa leitura introdutória)
5[6
[6
**Comentários sobre Terminologia***
Junções são ligações simbólicas
Junções e ligações simbólicas estão realmente a fazer a mesma coisa da mesma forma (pontos de reparação), para além das supracitadas diferenças de como elas'são processadas de novo. De facto, 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, isso'é apenas algo a ter em conta no que diz respeito à terminologia.
NTFS
Embora a OP especifique isto, vale a pena salientar que "ligação simbólica" é um termo muito geral que não é específico do NTFS. Portanto, para ser específico, esta comparação é sobre NTFS Junctions vs. NTFS Symbolic Links.