Qual é a diferença entre os pontos de junção NTFS e os links simbólicos?

138

Em um nível alto, a única diferença óbvia entre os Pontos de Junção NTFS e os Links Simbólicos é que as Junções podem ser apenas diretórios, enquanto o SymLinks também pode direcionar arquivos.

Que outras diferenças existem entre os dois?

(Observe, eu já vi essa pergunta e o que estou procurando é um pouco diferente - essa pergunta está procurando uma lista de prós e contras, estou procurando um conjunto de diferenças técnicas)

Billy ONeal
fonte

Respostas:

86

Links simbólicos têm mais funcionalidade, enquanto junções quase parecem ser um recurso herdado por causa de suas limitações, mas as implicações de segurança dessas limitações são especificamente o motivo pelo qual uma junção pode ser preferida a um link simbólico. O direcionamento remoto torna os links simbólicos mais funcionais, mas também aumenta seu perfil de segurança, enquanto as junções são mais seguras porque são restritas aos caminhos locais . Portanto, se você deseja um link local e pode viver com um caminho absoluto, provavelmente está melhor com uma junção; caso contrário, considere um link simbólico para suas habilidades adicionais.

insira a descrição da imagem aqui

** A declaração de diferença de velocidade / complexidade vem de uma declaração não verificada na entrada da Wikipedia sobre pontos de nova análise 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 ao considerar junções, porque não listam os benefícios que listo acima.

Retirado daqui (uma boa leitura introdutória)

insira a descrição da imagem aqui

Da página SS64 no MKLink

insira a descrição da imagem aqui


Comentários sobre Terminologia

As junções são pontos de nova análise (podem ser descritos como links simbólicos)

As junções NTFS e os links simbólicos NTFS estão realmente fazendo a mesma coisa da mesma maneira (pontos de nova análise), além das diferenças mencionadas acima na maneira como são processadas. De fato, tecnicamente, uma junção é um "link simbólico" no sentido mais geral da palavra, e algumas vezes a documentação pode chamar uma junção de link simbólico, como é o caso aqui . Nesses casos, "link simbólico" não significa Link simbólico NTFS que é diferente de uma junção (veja abaixo).

NTFS

Embora o OP especifique isso, vale ressaltar que "link simbólico" é um termo muito geral que não é específico do NTFS. Portanto, para ser específico, essa comparação é sobre junções NTFS versus links simbólicos NTFS.

u8it
fonte
Pontos de junção e links simbólicos são pontos de nova análise, mas os pontos de junção definitivamente não são links simbólicos! Ah, e a mesa também está errada. O alvo de um ponto de junção deve existir após a criação, mas pode ser removido mais tarde.
0xC0000022L
3
@ 0xC0000022L Sim, você está certo se o que está dizendo é que uma junção NTFS não é um link simbólico NTFS. Eu posso ver como minhas palavras podem ser mal interpretadas ao dizer isso. Editarei para esclarecer, mas o ponto é que, nesse contexto, "link simbólico" refere-se a Links Simbólicos NTFS, que são implementações específicas da idéia mais geral de "link simbólico" à qual as junções também pertencem. Você seguiu o link que eu postei? Não está dizendo que uma junção NTFS é um link simbólico NTFS, mas o termo "link simbólico" pode ser usado para descrever uma junção.
u8it
justo, quando se refere ao conceito, pode ser uma maneira de pensar sobre ele. Mas eu realmente acho que o termo ponto de nova análise traz o conceito para casa, porque explica muito mais o que está acontecendo no gerenciador de objetos do NT e que esse conceito vai muito além de quais links simbólicos costumavam existir no Unix, por exemplo (onde são arquivos comuns com uma bandeira especial). E sim, ouvi pontos de junção explicados como "links simbólicos para diretórios".
0xC0000022L
@ 0xC0000022L Além disso, não vejo o problema mencionado sobre a tabela estar errada. Você está se referindo à característica "Pode apontar para um alvo inexistente"? E você está dizendo que isso está errado pelo menos ao criar uma junção? Se você tiver certeza de que é esse o caso em um ambiente específico (talvez para o Windows XP ou por causa das configurações de segurança), anotarei isso, mas na minha experiência e na documentação (e acabei de confirmar no Windows 10), uma junção pode sempre segmente um caminho inexistente, mesmo após a criação ... pode haver configurações de segurança que restrinjam isso.
U8it 22/1018
Junções não são herdadas. Eles implementam pontos de montagem (ligação / volume), não links simbólicos. Quando um caminho é analisado em uma posição aberta, o sistema lembra junções atravessadas para avaliar links simbólicos relativos que atravessam pontos de montagem. Essas travessias precisam manipular uma junção como se fosse um diretório regular, enquanto um link simbólico é analisado como seu caminho de destino. Por exemplo, diga "C: \ junction" e "C: \ symlink" ambos segmentam "E: \ spam" e o link simbólico relativo "E: \ spam \ eggs.txt" segmenta ".. \ eggs.txt". Em seguida, "C: \ junction \ eggs.txt" resolve para "C: \ eggs.txt" e "C: \ symlink \ eggs.txt" resolve para "E: \ eggs.txt".
Eryk Sun
35

Os lugares que considero mais úteis para as diferenças:

http://blogs.msdn.com/b/junfeng/archive/2006/04/15/576568.aspx

http://www.hanselman.com/blog/MoreOnVistaReparsePoints.aspx

Postulado: o link simbólico é para junção no Windows como o link simbólico para Hardlink no Unix.

http://en.wikipedia.org/wiki/Symbolic_link#Windows_7_.26_Vista_symbolic_link

O Windows 7 e o Windows Vista oferecem suporte a links simbólicos para arquivos e diretórios com o utilitário de linha de comando mklink. Ao contrário dos pontos de junção, um link simbólico também pode apontar para um arquivo ou caminho de rede remoto do Server Message Block (SMB). Além disso, a implementação do link simbólico do NTFS fornece suporte completo para links do sistema de arquivos cruzados. No entanto, a funcionalidade que habilita links simbólicos entre hosts requer que o sistema remoto também os suporte, o que limita efetivamente o suporte ao Windows Vista e sistemas operacionais Windows posteriores.

http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/

Um link simbólico, criado pelo Windows, é muito semelhante a uma junção de diretório, mas diferente de uma junção de diretório, ele pode apontar para um arquivo ou diretório ou arquivo de rede remoto. O alvo pode ser definido como um caminho relativo à posição do link simbólico, ou um caminho absoluto no volume atual ou em outro. Observe também que os links simbólicos para arquivos são diferentes dos links simbólicos para diretórios e o destino deve corresponder à definição.

James Manning
fonte
1
Para obter informações específicas do Windows 7: msdn.microsoft.com/en-us/library/windows/desktop/…
Joshua Drake
14
A resposta aceita já tem três anos, mas gostaria de salientar que os pontos de junção do NFTS não se comparam aos hardlinks no Unix, como está implícito no postulado citado. Isso deve ser óbvio, pois um ponto de junção não pode fazer referência a um arquivo, mas um hardlink pode. O NTFS também suporta hardlinks (que são diferentes de junções), e esses são mais ou menos comparáveis ​​aos hardlinks do Unix.
@elgonzo Concordo totalmente. AFAIK, um link físico Unix, pode se referir apenas a um arquivo, portanto, não se parece com a junção de diretório NTFS.
Franklin Yu
20

Funcionalmente, no Windows, uma vez criado, não há diferença real. No entanto, existem diferenças significativas entre eles no que eles podem fazer. As junções podem ser usadas apenas para a criação de links para pastas, na mesma unidade ou em unidades diferentes, mas apenas se essas unidades estiverem no sistema local (você não pode criar um link de junção para uma pasta na rede.) Links simbólicos no entanto, não tem as mesmas restrições. Links simbólicos podem ser usados ​​para vincular arquivos ou pastas e esses arquivos ou pastas podem estar localizados no mesmo sistema (mesma unidade ou unidades diferentes) ou em um compartilhamento de rede e podem usar símbolos de localização relativa ("\\ system2 \ foldera \ file.txt "," d: \ foldera \ file.txt "," \\ system2 \ foldera "," d: \ foldera "ou" d: \ foldera \ folderb .. "

Para resumir: Os pontos de junção são limitados apenas às pastas no sistema local, enquanto os Links Simbólicos podem criar links para pastas ou arquivos acessíveis através de um caminho UNC ou no sistema local, com mais versatilidade na maneira como esses locais são designados. O Symbolic Links é basicamente um substituto mais versátil para os pontos de junção e os hard links. Além disso, os Links Simbólicos são compatíveis com Unix e Linux ao criar um link de caminho UNC de plataforma cruzada.

Felizmente, isso responde à sua pergunta de maneira satisfatória. Editado para corrigir erros tipográficos.

Assistente de Techno
fonte
10

A Extensão do Shell de Link, http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html , é uma ótima ferramenta para criar e visualizar muitos tipos de links. Também possui excelente documentação.

[Em uma instalação completa, ele adiciona uma nova guia de propriedades, se você estiver procurando um link avançado. Também adiciona setas de sobreposição de ícones para os vários tipos de links - role até a seção Perguntas frequentes, se elas não aparecerem; O Windows suporta apenas treze sobreposições; ele mostra uma solução alternativa do registro. Um exemplo de sua utilidade informativa: tentar, sem êxito, obter privilégios para o que você pensava ser uma pasta, mas na verdade era um Junction Link fornecido pelo sistema, geralmente usado para fins de compatibilidade com edições antigas do Windows.]

Junções e links simbólicos agem essencialmente de forma idêntica quando criados para um diretório em um sistema local.

Contudo:

Eles agem de maneira diferente em uma rede. Este link descreve esse comportamento: /superuser/343074/directory-junction-vs-directory-symbolic-link

Se você pensa nos Links de junção como "atalhos que enganam o sistema operacional quanto à localização", você terá um bom exemplo prático de seu uso e o que os quebra. A principal diferença é que, se você copiar links simbólicos ou junções, ele copiará o destino, em vez (como atalhos), apenas o arquivo que contém o ponteiro. Assim como os atalhos, você pode excluir links simbólicos ou de junção sem remover os arquivos / pastas de destino. [Links físicos, o arquivo é excluído apenas com a remoção do último link - inclusive da lixeira. Observe a tag de propriedades no LSE para qualquer um desses links para ver o destino ou a contagem de referências para Links físicos.]

Links físicos ou atalhos são os únicos tipos de links que podem ser movidos sem efeitos colaterais, como quebrar ou copiar todo o destino. Mover o destino sempre quebra os links, embora eles possam ser facilmente atualizados na guia de propriedades (mostrada com o LSE) ou recriados, se complicado, com o LSE.

A criação de links simbólicos requer privilégios de administrador, enquanto as junções não. Isso, além do amplo uso interno do Junctions no sistema operacional, sugere que o Windows lida com eles de maneira intuitiva e esperada. [Seja um pouco cauteloso com efeitos colaterais inesperados das pastas do sistema (da experiência com o Win 10).]

[Alguns dos recursos específicos de backup da Link Shell Extension são extremamente úteis - em resumo, ele pode criar vários tipos de estruturas de links simbólicas atualizáveis ​​em pastas padrão para fins de backup pendentes.]

Argila
fonte
E o Link Shell Extension parece uma ótima ferramenta. Há também um utilitário leve relacionado chamado ln.exe ... mesmo que você não use, você aprenderá muito apenas lendo o guia do usuário direto do site.
u8it
Acho que sua edição de 2 de abril de 2016 deixou as coisas menos claras, Clay. Eu acho que você quis dizer algo assim: "A principal diferença entre esses arquivos e 'atalhos' é que, se você ... ele copia o destino, em vez de apenas o arquivo que contém o ponteiro (o que acontece se você copiar um atalho) arquivo) "
Jon Coombs
4

Links simbólicos foram introduzidos muito recentemente no Windows: a partir do Vista.

Os links simbólicos não devem ser considerados uma alternativa à tecnologia existente "Reparse Point" do NTFS.

A Microsoft explica que o único objetivo dos links simbólicos é ser mais compatível com o Unix.

MSDN: " Os links simbólicos foram projetados para ajudar na migração e na compatibilidade de aplicativos com o UNIX. A Microsoft implementou seus links simbólicos para funcionar exatamente como os links do UNIX. "

O Vista também é o primeiro sistema operacional a usar links para seu próprio funcionamento. Para ser compatível com os nomes de pastas herdadas, C:\Documents and Settingsagora é um link para C:\Users.

Curiosamente, embora o Vista introduza links simbólicos, " Documents and Settings" este truque é na verdade uma junção antiga simples.

Philip
fonte
2
Esta resposta não diz nada sobre as diferenças entre links simbólicos e junções. (Como tal, eu não acho que ele realmente se aplica a esta pergunta em tudo)
Billy ONeal
A partir do Windows Vista ligação em diante simbólica substitui Junções (também, como sabemos, ambos são pontos de nova análise)
Aravind
2

Além da excelente resposta do u8it:

Se alguém estiver interessado na diferença de comportamento no Windows File Explorer no Windows 10:

arraste e solte para o diretório de destino:

  • symbolic link: move o symbolic linkpara o diretório de destino
  • junction: move o original directorypara o diretório de destino

clique direito do mouse + propriedades:

  • symbolic link: mostra propriedades de atalho
  • junction: mostra as original directorypropriedades da pasta

clique esquerdo no painel esquerdo (árvore de diretórios):

  • symbolic link: seleciona o original directory
  • junction: seleciona o junction
Jinjinov
fonte
A criação de links simbólicos requer privilégios de administrador, enquanto as junções não.
Jinjinov 01/10/19
Windows 10 Versão 10.0.17134.1130: A junção em movimento no explorer move apenas o conteúdo do diretório original. Clicar com o botão esquerdo no link simbólico na árvore não seleciona o diretório original.
SalgoMato 31/01