O título diz tudo ... qual é a diferença? Quando uso um e quando uso o outro?
Adicionado: observe que pontos de junção , links físicos e links simbólicos (flexíveis) são três itens separados no NTFS.
O título diz tudo ... qual é a diferença? Quando uso um e quando uso o outro?
Adicionado: observe que pontos de junção , links físicos e links simbólicos (flexíveis) são três itens separados no NTFS.
Respostas:
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 possui um contador do número de nomes apontando para ele. Se o número for 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 os aponte. Observe que todos os atributos do arquivo, incluindo datas e horas, são armazenados com o inode, não o nome do arquivo.
Os hardlinks (extras) são úteis quando você deseja que nomes diferentes apontem para os mesmos dados, leiam ou gravem. Eles economizam espaço e sobrecarga. No entanto, eles clobber programas que assumem nomes diferentes apontam para dados diferentes. por exemplo, se você substituir referências a arquivos duplicados por links físicos para um único arquivo, você removeu qualquer backup que você possui! O sistema operacional Windows é um programa que assume que nomes diferentes apontam para diferentes conjuntos de bits.
Os hardlinks devem estar no mesmo volume físico e lógico.
Eles são úteis para:
reduzindo o comprimento do caminho, já que o Windows suporta apenas 256 caracteres.
reduzindo o 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 links físicos para arquivos que não foram alterados desde o backup anterior.
Os pontos de junção são mais confusos e usam pontos de nova análise (que eu não entendo). Eles podem apontar para diferentes volumes físicos ou lógicos, mas precisam estar no mesmo computador. Aparentemente, eles 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ório codificados.
As mesmas advertências também! Muitos programas assumem nomes diferentes = arquivos diferentes.
E existem links simbólicos (que podem atravessar 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).
Link simbólico: um link para um arquivo ou diretório no mesmo volume ou em um volume diferente (letra da unidade) ou 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. Cada arquivo (dados do arquivo) possui 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 em volume diferente (letra da unidade), mas não para um diretório remoto.
Supondo que você esteja trabalhando com volumes NTFS no Windows Vista / 7, poderá 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 /D
parâmetro cria um link simbólico de diretório. O MKLINK não verifica se o destino é um arquivo ou diretório ou mesmo se o destino 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 inexistente.
Links simbólicos podem ser links absolutos ou relativos. Links absolutos são links que especificam cada parte do nome do caminho, enquanto os 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 volume diferente, bem como para um arquivo ou diretório remoto usando o caminho UNC. No entanto, links simbólicos relativos são restritos a um único volume.
Privilégios elevados são necessários 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 criar links físicos (usando o /H
parâmetro) apenas de arquivos (não diretórios). Um link físico só pode ser criado para 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, na verdade, todo arquivo que você cria possui pelo menos um link físico, independentemente de você usar MKLINK
ou não.
Quaisquer alterações nesse arquivo são visíveis instantaneamente para os aplicativos que acessam através dos links físicos que fazem referência a ele. No entanto, o tamanho da entrada do diretório e as informações do atributo são atualizadas apenas para o link através do qual a alteração foi feita.
Observe que os atributos no arquivo são refletidos em todos os links físicos desse arquivo, e as alterações nos atributos desse arquivo são propagadas para todos os links físicos. Por exemplo, se você desabilitar 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 links físicos restantes para trazer o arquivo e todos os links físicos restantes de volta ao estado somente leitura.
Junções : uma junção (também chamada de link virtual) difere de um link físico, pois os objetos de armazenamento que ele referencia são diretórios separados, e uma junção pode vincular diretórios localizados em diferentes volumes locais no mesmo computador. Caso contrário, as junções operam de forma idêntica aos links físicos. As junções são implementadas através de pontos de nova análise.
MKLINK
permite criar uma junção (usando o /J
parâmetro) de um diretório (e até de arquivos, embora isso provavelmente deva ser considerado um link inválido).
Uma junção pode ser considerada o equivalente do link físico 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 físicos e junções: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx
[2] Criando links simbólicos: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx
Hard link é apenas outro nome para um arquivo. Se você tiver o arquivo A.txt e o link L.txt, depois de excluir o A.txt, você ainda terá acesso aos dados através do L.txt. Somente quando os dois arquivos excluídos desaparecem.
Por outro lado, você tem o chamado link virtual (junção se for pasta ou link simbólico se for arquivo). Nesse caso, quando você exclui A.txt, o arquivo realmente desapareceu. Excluir L.txt não tem efeito no arquivo.
Os links físicos podem ser usados apenas na mesma partição que o arquivo de origem e os links físicos podem ser usados nas partições.
O arquivo e a pasta PS são basicamente intercambiáveis no que diz respeito ao NTFS.
Hard link: funciona apenas para o mesmo volume.
Junção: qualquer volume local
Simbólico: volume local ou caminho UNC
| 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 os aplicativos mal escritos que pensam:
é válido.
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 acontece na pasta de perfil do usuário, para aplicativos que esperam que as pastas da era do Windows XP ainda 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 |
Para responder programaticamente:
Link físico: shared_ptr <>. Sempre existe.
Link suave: fraca_ptr <>. Válido somente quando outro link físico existe.