Qual é a diferença entre hard links NTFS e junções de diretório?

69

O título diz tudo ... qual a diferença? Quando uso um e quando uso o outro?

Adicionado: Observe que Pontos de junção , são três coisas em NTFS.

    
por Vilx- 09.11.2009 / 11:53

5 respostas

30

Os arquivos de dados NTFS são armazenados com todos os seus atributos como um "inode" com um ID, e os nomes de arquivos apontam para o inode. Todos os arquivos têm um + hardlink. algumas ferramentas podem criar nomes extras (hardlinks) que apontam para o mesmo inode, que tem um contador do número de nomes apontando para ele. Se o número chegar a zero, o sistema operacional excluirá o arquivo, o inode.

Ferramentas especiais, como o LN, podem criar nomes de arquivos adicionais que apontam para inodes existentes, usando um nome de arquivo que aponta para eles. Observe que todos os atributos de arquivo, incluindo datas e horas, são armazenados com o inode, não com o nome do arquivo.

Hardlinks

(Extra) são úteis quando você deseja que nomes diferentes apontem para os mesmos dados, leia ou escreva. Eles economizam espaço e sobrecarga. No entanto, eles reprovam programas que assumem diferentes nomes apontam para dados diferentes. Por exemplo, se você substituir referências a arquivos duplicados por hardlinks em um único arquivo, você terá removido qualquer backup que tenha! O sistema operacional Windows é um programa que assume nomes diferentes para diferentes conjuntos de bits.

Os hardlinks precisam estar no mesmo volume físico e lógico.

Eles são úteis para:

  • reduzindo comprimentos de caminho, pois o Windows apenas suporta 256 caracteres ou mais.

  • reduzindo espaço de armazenamento de arquivos de dados duplicados - por exemplo, você pode ter vários backups de uma partição com várias árvores de diretório completas, mas com hardlinks para arquivos que não foram alterados desde o backup anterior.

Os pontos de junção são mais confusos e usam Pontos de Reparo (que eu não entendo). Eles podem apontar para volumes físicos ou lógicos diferentes, mas precisam estar no mesmo computador. Eles aparentemente podem ser usados como links simbólicos para diretórios, permitindo um segundo nome para o mesmo destino, mas limitado a um único computador, em vez de apenas um único volume.

Útil para reduzir comprimentos de caminho ou simplificar o trabalho com vários programas com nomes de diretórios codificados.

Mesmas advertências também! Muitos programas assumem nomes diferentes = arquivos diferentes.

E há links simbólicos (que podem ser encontrados em redes), atalhos e PIFs e .....

Também algumas informações da própria Microsoft :

Basicamente, eles estão dizendo para usar links físicos apenas para arquivos dentro do mesmo volume (letra da unidade de disco) e pontos de junção apenas para diretórios no mesmo computador (eles podem se estender por diferentes volumes locais).

    
por 13.11.2009 / 16:38
38

Definições rápidas:

Link simbólico: Um link para um arquivo ou diretório no mesmo ou diferente volume (letra da unidade) ou até mesmo para um arquivo ou diretório remoto (usando UNC em seu caminho).

Hard Link: Um link para um arquivo no mesmo volume (letra da unidade) apenas. Todo arquivo (dados do arquivo) tem pelo menos 1 link físico (nome do arquivo). A exclusão de todos os links físicos exclui efetivamente o arquivo.

Junção: Um link para um diretório no mesmo volume ou diferente (letra da unidade), mas não para um diretório remoto.

Detalhes:

Supondo que você esteja trabalhando com volumes NTFS no Windows Vista / 7, você pode usar a ferramenta de linha de comando MKLINK para criar todos os três tipos de Links:

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.

Links simbólicos : Um link simbólico é um objeto do sistema de arquivos que aponta para outro objeto do sistema de arquivos (por exemplo, arquivo / diretório).

  • MKLINK pode ser usado para criar links simbólicos. O uso do parâmetro /D cria um link simbólico de diretório. MKLINK não verifica se o alvo é um arquivo ou um diretório ou até mesmo se o alvo existe! Isso significa que você pode potencialmente criar links inválidos como um link simbólico de diretório para um arquivo ou um link simbólico para um arquivo / diretório não existente.

  • Os links simbólicos podem ser links absolutos ou relativos. Links absolutos são links que especificam cada parte do nome do caminho, enquanto links relativos são determinados em relação a onde os especificadores de link relativo estão em um caminho especificado.

  • Links simbólicos absolutos podem apontar para arquivos / diretórios no mesmo volume ou em volumes diferentes, bem como para um arquivo ou diretório remoto usando o caminho UNC. No entanto, os links simbólicos relativos são restritos a um único volume.

  • São necessários privilégios elevados para criar um link simbólico, embora uma vez criados privilégios elevados não sejam necessários para excluir o link.

Links físicos : um link físico é a representação do sistema de arquivos de um arquivo pelo qual mais de um caminho faz referência a um único arquivo.

  • MKLINK permite a criação de links físicos (usando o parâmetro /H ) apenas de arquivos (não de diretórios). Um link físico só pode ser criado de um arquivo no mesmo volume.

  • Um arquivo com vários links físicos só é realmente excluído quando todos os links físicos são excluídos, ou seja, a contagem de links chega a zero. Então, cada arquivo que você cria tem pelo menos um link físico para ele, se você usa MKLINK ou não.

  • Quaisquer alterações a esse arquivo ficam visíveis instantaneamente para aplicativos que o acessam por meio dos links físicos que fazem referência a ele. No entanto, o tamanho da entrada de diretório e as informações de atributo são atualizadas apenas para o link por meio do qual a alteração foi feita.

  • Observe que os atributos no arquivo são refletidos em todos os links para esse arquivo, e as alterações nos atributos desse arquivo se propagam para todos os links físicos. Por exemplo, se você desmarcar o atributo somente leitura em um link físico para excluir esse link físico específico e houver vários links físicos para o arquivo real, será necessário redefinir o atributo somente leitura no arquivo. de um dos hard links restantes para trazer o arquivo e todos os hard links remanescentes de volta ao estado somente leitura.

Junções : Uma junção (também chamada de link flexível) difere de um link físico, pois os objetos de armazenamento aos quais faz referência são diretórios separados e uma junção pode vincular diretórios localizados em diferentes volumes locais no diretório. mesmo computador. Caso contrário, as junções operam de forma idêntica aos links físicos. Junções são implementadas através de pontos de nova análise.

  • MKLINK permite criar uma junção (usando o parâmetro /J ) de um diretório (e até de arquivos, embora isso provavelmente deva ser considerado como um link inválido).

  • Uma junção pode ser considerada como o link físico equivalente para um link simbólico para um diretório. Um link de junção não pode ser criado para um diretório remoto, mas pode ser criado para um diretório no mesmo volume / diferente.

Referências:

[1] Links e Junções: link

[2] Criação de links simbólicos: link

[3] "diretório junção" vs "diretório link simbólico"?

    
por 15.04.2015 / 23:13
9

Link físico é apenas outro nome para um arquivo. Se você tiver o arquivo chamado A.txt e tiver o link L.txt, depois de excluir o arquivo A.txt, você ainda terá acesso aos dados através de L.txt. Somente quando ambos são apagados, o arquivo desaparece.

Por outro lado, você tem um chamado soft-link (junção se é pasta ou link simbólico se for arquivo). Nesse caso, quando você exclui A.txt, o arquivo é realmente ido. A exclusão de L.txt não tem nenhum efeito no arquivo, por assim dizer.

Os links físicos só podem ser usados na mesma partição, pois os arquivos originários e os soft-links podem ser usados nas partições.

P.S. O arquivo e a pasta são praticamente intercambiáveis no que diz respeito ao NTFS.

    
por 09.11.2009 / 11:58
0

Link físico: funciona apenas para o mesmo volume.
Junção: qualquer volume local
Simbólico: volume local ou UNC caminho

| Link Type     | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link     | Yes         | No               | No       |
| Junction      | Yes         | Yes              | No       |
| Symbolic link | Yes         | Yes              | Yes      |

Bónus Chatter

O Windows cria junções e links simbólicos para fins do AppCompat; para aqueles aplicativos mal escritos que pensam:

  • C: \ Usuários \ Todos os usuários
  • C: \ Usuários \ Usuário padrão

são válidos.

C:\Users>dir /as

 Directory of C:\Users

04/11/2018  07:45 PM    <SYMLINKD>     All Users [C:\ProgramData]
04/11/2018  07:45 PM    <JUNCTION>     Default User [C:\Users\Default]

O mesmo é verdadeiro na pasta do perfil do usuário, para aplicativos que ainda esperam que as pastas do Windows XP existam hoje:

| Folder           | Type       | Target                                                           |
|------------------|------------|------------------------------------------------------------------|    | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming                                     |
| Cookies          | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies         |
| Local Settings   | <JUNCTION> | C:\Users\Ian\AppData\Local                                       |
| My Documents     | <JUNCTION> | C:\Users\Ian\Documents                                           |
| NetHood          | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent            |
| SendTo           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo            |
| Start Menu       | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu        |
| Templates        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates         |
    
por 14.07.2018 / 16:11
-1

Para responder de forma programática:

Link físico: shared_ptr < & gt ;. Sempre existe um.

Soft link: weak_ptr < & gt ;. Válido apenas quando existe outro link físico.

    
por 25.12.2016 / 20:54

Tags