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.