Qual é a diferença entre um link flexível (simbólico) e um link físico?

59

Ouvi dizer que agora você também pode criar links flexíveis no Vista . Então, qual é a diferença entre um link flexível (simbólico) e um link físico no UNIX / Linux / Vista?

Existem vantagens em usar um sobre o outro? Ou eles apenas servem a dois propósitos distintos?

Aaron K
fonte
Em termos práticos, a resposta é que você quase sempre deseja usar um link simbólico. Meu entendimento é que os links físicos são principalmente para preservar espaço, especialmente em itens como instantâneos e backups incrementais, em que os instantâneos sucessivos têm muitos arquivos idênticos que provavelmente não serão alterados no futuro.
9139 Thompson Ryan Thompson
Isso deve ser migrado para Unix e Linux? Veja unix.stackexchange.com/questions/9575/…
ripper234
2
Não, não deve ser migrado. Como a pergunta original não é específica apenas para o Unix - o Windows suporta links físicos e físicos.
Richard West
11
alguns aplicativos quebram (e às vezes mal) se você usar um link flexível - especialmente para diretórios: o link suave será desreferenciado e, quando estiver e o aplicativo for comparado, digamos /var/opt/log/appname(sua configuração) com o valor desreferenciado, digamos /apps/appname/logs, ele reclamará isso não é páreo. A correção para isso é usar um mount --bind(no Linux) para remontar o diretório original para o novo local.
Warren
11
Apenas para esclarecer alguns pontos incluídos em outras respostas ... O Windows pode criar hardlinks (embora eu acredite que eles se comportam de maneira um pouco diferente do que no Unix). Dê uma olhada no comando mklink e no argumento h. (Se você digitar mklink na linha de comando, você verá o arquivo de ajuda que inclui a sintaxe básica.)

Respostas:

68

Tradicionalmente, um link físico compartilha as mesmas estruturas de sistema de arquivos (inode em unixspeak), enquanto um link físico é um redirecionamento de nome de caminho.

  • Os hardlinks devem estar no mesmo sistema de arquivos, os softlinks podem cruzar os sistemas de arquivos.
  • Os arquivos vinculados permanecem vinculados, mesmo que você mova um deles (a menos que você mude um para outro sistema de arquivos, acionando o mecanismo de copiar e excluir). Os arquivos com link virtual são interrompidos se você mover o destino (original) e, às vezes, quando você move o link (Você usou um caminho absoluto ou relativo? Ainda é válido?).
  • Os arquivos com links físicos são co-iguais, enquanto o original é especial em softlinks, e a exclusão do original exclui os dados. Os dados não desaparecem até que todos os hardlinks sejam excluídos.
  • Os softlinks podem apontar para qualquer destino, mas a maioria dos sistemas operacionais / sistemas de arquivos não permite diretórios com links diretos para evitar ciclos no gráfico do sistema de arquivos (com exceção das entradas .e ..nos diretórios unix que são links físicos).
  • Os softlinks podem exigir suporte especial das ferramentas de caminhada do sistema de arquivos. Leia no readlink (2) .

(Alguns detalhes são lembrados pelo mat1t . Obrigado.)

dmckee
fonte
Bom resumo. Todo usuário do Linux deve saber disso (embora os links físicos sejam muito incomuns).
Artem Russakovskii
A resposta de dmckee tem os detalhes sobre a semântica praticamente exatos. O único detalhe que eu acrescentaria é uma explicação do que acontece em um nível superior: um link flexível é um arquivo por si só, enquanto um link físico é uma entrada de diretório que aponta para dados existentes. Wikipedia tem mais detalhes sobre duros e macios ligações.
Mr. Shiny and New #
boa quantia para cima, muito útil
Razique
9
Observe também que os links físicos compartilham permissões e informações de propriedade.
Corey S.
6
Adicione que 2 hardlinks são criados automaticamente com o nome. e .. sempre que você cria uma pasta. No Linux, esses são os únicos hardlinks válidos para uma pasta.
Mircea Vutcovici
10

O resumo é que um link simbólico / curto atua como um atalho para o local do primeiro arquivo, enquanto um link físico é um atalho para o arquivo no disco.

Se você excluir o destino de um link virtual, o link virtual deixará de funcionar, mas se você excluir uma cópia de um link físico, o arquivo permanecerá no disco até que todos os links físicos sejam removidos. Com efeito, todos os nomes de arquivos são links físicos para o arquivo no disco.

Também existem certas restrições, por exemplo, acho que você não pode criar links físicos para pastas, mas pode criar links físicos para elas. Os soft links também podem apontar para arquivos / pastas em diferentes unidades e partições, enquanto os hard links não podem.

Matthew Steeples
fonte
-1

O sistema MS Windows sempre usa links flexíveis (atalhos). Ou seja, o link simplesmente atua como um atalho apontando para o local do arquivo. Se a localização do original for movida, o link será interrompido. Além disso, o que você faz com o atalho (como alterar permissões ou alterar o nome do atalho) não afeta o arquivo real.

Então a pergunta começou com uma suposição incorreta. Sim, o Vista usa softlinks, mas não é novo, ou seja, é um atalho do MS.

Reginald Kincaid
fonte
3
Não, o NTFS suporta hardlinks e possui o NTFS 3.1 (a versão atual desde XP / 2003).
27512 Chris S