“junção de diretório” vs “diretório link simbólico”?

344

No contexto do NTFS:

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

/D Creates a directory symbolic link. Default is a file symbolic link.
/H Creates a hard link instead of a symbolic link.
/J Creates a Directory Junction.
Link specifies the new symbolic link name.
Target specifies the path (relative or absolute) that the new link refers to.

  1. Uma junção de diretório não é exatamente a mesma coisa que um link simbólico de diretório ?

    Qual é a diferença entre mklink /D f1 f2 e mklink /J f1 f2 ?

  2. Como um "diretório" é na verdade apenas um arquivo , qual seria a diferença entre um link simbólico de diretório e um link simbólico de arquivo?

por Pacerier 05.10.2011 / 05:28

3 respostas

325

Uma junção definitivamente não é a mesma coisa que um link simbólico de diretório, embora eles se comportem de maneira semelhante. A principal diferença é que, se você estiver procurando em um servidor remoto, as junções serão processadas no servidor e os links simbólicos do diretório serão processados no cliente . Veja também o comentário de Matthew sobre o fato de que isso significa que links simbólicos no sistema de arquivos local podem apontar para sistemas de arquivos remotos.

Suponha que em uma máquina chamada Alice você deveria colocar um ponto de junção c:\myjp e um link simbólico de diretório c:\mysymlink , ambos apontando para c:\targetfolder . Enquanto você estiver usando Alice você não notará muita diferença entre eles. Mas se você estiver usando outra máquina chamada Bob, então o ponto de junção

\Alice\c$\myjp apontará para \Alice\c$\targetfolder

mas o link simbólico

\Alice\c$\mysymlink apontará para \Bob\c$\targetfolder

(Advertência: por padrão, o sistema não segue links simbólicos em volumes remotos, portanto, na maioria dos casos, o segundo exemplo resultará em "Arquivo não encontrado" ou "O link simbólico não pode ser seguido porque seu tipo está desabilitado. ")

A diferença entre um link simbólico de diretório e um link simbólico de arquivo é simplesmente que um representa um diretório e um representa um arquivo. Como o destino do link não precisa existir quando o link é criado, o sistema de arquivos precisa saber se deve informar aos aplicativos se é um diretório ou não.

Também deve ser notado que a criação de um link simbólico requer um privilégio especial (por padrão, disponível somente para processos elevados), enquanto a criação de uma junção requer apenas acesso ao sistema de arquivos.

    
por 25.04.2017 / 01:06
44

Conversa complexa machuca o cérebro - eu gosto de gráficos:

Suponha que MyLink seja um link simbólico e qualquer MyJunc seja uma junção apontando para Target as created .

por exemplo,

mklink /D MyLink C:\T_Dir para criar um link simbólico para o diretório de destino

mklink /J MyJunc C:\T_Dir para criar uma junção de diretório para o diretório de destino

Onde a sintaxe é mklink [/J,/D] [link path] [target path] conforme 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 você desbloquear o acesso a links simbólicos remotos em sua máquina local, isso funcionará ... mas somente na máquina local em que ele foi desbloqueado

    
por 22.10.2015 / 21:03
22

Eu estava com a impressão de que os entroncamentos estavam por aí por razões legadas e os links simbólicos eram melhores (as coisas aparecem assim pelo valor de face). Acontece que isso não é inteiramente verdade. Existem algumas boas razões para usar uma junção em vez de um link simbólico. A principal diferença se resume à segurança e caminhos remotos vs. locais . Sim, a segmentação remota torna os links simbólicos mais funcionais, mas também aumenta seu perfil de segurança. Então, se você quer um link local e pode viver com um caminho absoluto, você provavelmente está melhor com um entroncamento; Caso contrário, considere um link simbólico para suas habilidades adicionais.

**Adeclaraçãodediferençaemvelocidade/complexidadevemdeumadeclaraçãonãoverificadana entrada da Wikipedia sobre pontos de nova análise do NTFS (uma boa leitura). *

Outras comparações de links NTFS

Aqui estão algumas outras comparações sobre o tópico, mas elas podem ser enganosas quando consideramos junções porque elas não listam os benefícios listados acima.

Extraído daqui (um bom artigo introdutório leia)

De página SS64 no MKLink

Comentáriossobreterminologia

Junçõessãolinkssimbólicos

Junçõeselinkssimbólicosestãorealmentefazendoamesmacoisadamesmamaneira(pontosdenovaanálise),alémdasdiferençasjámencionadasemcomoelessãoprocessados.Naverdade,tecnicamente,umJunctionéumlinksimbólicoe,àsvezes,adocumentaçãopodechamarumJunctiondeumlinksimbólico, como é o caso aqui . Então, isso é apenas algo para estar ciente sobre a terminologia.

NTFS

Embora o OP especifique isso, vale a pena ressaltar que "link simbólico" é um termo muito genérico que não é específico do NTFS. Então, para ser específico, essa comparação é sobre Junções NTFS vs. Links Simbólicos NTFS.

    
por 02.02.2018 / 17:30