Os links rígidos são equivalentes aos atalhos do Windows?

51

A Wikipedia define um link físico como:

  

uma entrada de diretório que associa um nome a um arquivo em um sistema de arquivos. (Um diretório é em si um tipo especial de arquivo que contém uma lista de tais entradas.) O termo é usado em sistemas de arquivos que permitem a criação de vários hard links para o mesmo arquivo.

Eu estou querendo saber se o conceito de hard link é equivalente ao conceito Windows de Atalho .

Se os links físicos não são equivalentes a atalhos, qual é o recurso mais próximo do Windows para links físicos?

    
por Computernerd 10.03.2014 / 15:51

5 respostas

112

Não, um link físico é completamente diferente. Um link flexível está mais próximo de um atalho do Windows (embora existam diferenças importantes, os links simbólicos são mais semelhantes aos atalhos do Windows do que os links físicos). Um link rígido é uma coisa diferente e você quase nunca precisará.

Resumidamente, um link temporário é criado com este comando:

ln -s foo bar

Se você executar ls -l , verá:

lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

O -> significa que bar é um link para foo . Portanto, abrir bar com um editor de texto, por exemplo, abrirá o arquivo foo . No entanto, excluir bar apenas excluirá o atalho, isso não afetará o arquivo foo .

Os links físicos, por outro lado, são criados com este comando:

ln foo bar

Se você executar agora ls -l , não há indicação de qualquer relação entre os arquivos:

-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

Mas - e isso é muito importante - eles são realmente o mesmo arquivo . Os arquivos nos sistemas de arquivos Unix são armazenados usando inodes ; Um inode é basicamente a forma como o sistema de arquivos mapeia um nome de arquivo para um local específico no disco rígido físico. Portanto, links físicos são arquivos que apontam para o mesmo inode que seu alvo. Outra maneira de colocar isso é que todos os arquivos são realmente hard links apontando para seus inodes. Fazer um link físico para um arquivo simplesmente cria um novo ponteiro (arquivo) no sistema de arquivos que aponta para o mesmo inode. Cada inode pode ter vários arquivos apontando para ele ou para um ou nenhum.

Para entender isso mais claramente, use ls -i , que mostra o inode associado a um arquivo. Vamos criar um link e um link físico e ver o que acontece:

ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo

Agora, verifique seus inodes:

Como você pode ver acima, foo e HardLinkToFoo têm o mesmo inode (16648029), enquanto o SoftLinkToFoo tem um diferente (16648036).

O que acontece se renomearmos foo com mv foo bar ?

A cor vermelha indica um link flexível, cujo alvo não pode mais ser encontrado. Isso ocorre porque os soft links apontam para o nome de um arquivo, não para seu inode. Note que, apesar de mudar o nome, o inode continua o mesmo, então o hardlink está bom, ainda funciona.

Em resumo, hard links são na verdade duas manifestações do mesmo arquivo ; eles são ponteiros para a mesma seção do disco. Links suaves são apenas atalhos. Para ter uma analogia do mundo real, hardlinks são como dois números de telefone diferentes para a mesma linha telefônica e links suaves são como ter duas linhas telefônicas diferentes na mesma casa.

    
por terdon 10.03.2014 / 16:13
18

Há uma boa explicação do que são links físicos e físicos, mas uma coisa precisa ser esclarecida.

Os atalhos do Windows são equivalentes ou similares a nenhum links suaves nem links físicos . No nível do sistema de arquivos, são apenas arquivos. É o shell que entende sua estrutura e os interpreta como links. Os atalhos do Windows também podem apontar para objetos em namespaces de shell que não estão relacionados ao sistema de arquivos (impressoras, itens do painel de controle, pastas virtuais).

Os atalhos do Windows, além do nome do objeto do sistema de arquivos, contêm as seguintes informações: PIDL (caminho binário "opaco" dentro do namespace do shell), descrição, atalho, ícone, diretório de trabalho. O Windows também adiciona identificadores de objetos NTFS se o sistema de arquivos NTFS for usado para corrigir atalhos corrompidos.

O equivalente aproximado de um atalho do Windows é um arquivo .desktop . Veja esta pergunta no SuperUser: Existe um equivalente de .lnk no Linux?

    
por Athari 11.03.2014 / 12:57
6

Não. No Linux, as coisas funcionam de maneira diferente.

Cada arquivo é representado por um objeto chamado 'inode'. Todo inode tem um número (ID) associado a ele.

Como sabemos, os humanos não são bons em lembrar números, mas nomes. (É assim que as listas telefônicas evoluíram)

Portanto, o nome do arquivo entrou em cena para dar a cada inode um nome legível para humanos. Basicamente, um hardlink liga um nome de arquivo a um inode. Um inode pode ter vários hardlinks. Se não houver hardlinks presentes para um determinado inode, o espaço em disco usado pelo inode pode ser realocado para novos arquivos. O que significa, pelo menos, um hardlink deve apresentar para cada arquivo. O nome do arquivo (visualizado como o nome do arquivo / ícone que você vê no navegador de arquivos) é um link físico.

No Windows, o atalho é um arquivo separado (arquivo * .lnk). Ele contém informações sobre o arquivo original (compreensivelmente o caminho do arquivo). Na percepção do Linux, um atalho do Windows seria outro inode com hardlink para um nome de arquivo que termina com '.lnk'.

    
por Shaakunthala 10.03.2014 / 16:13
2

No Windows, você também pode criar hardlinks se tiver um sistema de arquivos NTFS.

fsutil hardlink create target_file source_file

Os arquivos devem estar na mesma unidade lógica.

    
por Spook 13.03.2014 / 09:44
1

Uma grande diferença, o link físico não pode ser criado para pastas, mas para arquivos.

  

Um atalho pode ser criado para pastas, então você não pode dizer que eles são   equivalente.

Sua pergunta deve ser a diferença entre o link simbólico ou o soft link e o atalho .

de acordo com isto:

  

Um link simbólico é o nível do sistema de arquivos, e tudo o vê como o   arquivo original. Um aplicativo não precisa de suporte especial para usar um   link simbólico.

     

Um "Atalho" é apenas um arquivo normal que tem uma referência ao   arquivo ou diretório de destino.

Então, quando você clica em um atalho, o seu diretório é alterado para o arquivo real, enquanto o soft-link se refere à sua localização como se fosse o arquivo real, pois no Linux você pode usar terminal e cd para links simbólicos cd para atalhos.

Um atalho do Windows e um iniciador do Linux (apontando para algum local) seriam idênticos.

    
por nux 10.03.2014 / 16:11