Não, um link físico é completamente diferente. Um link virtual 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 físico é uma coisa diferente e quase nunca será necessária.
Resumidamente, um link virtual é 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 ->
meio que bar
é um link para foo
. Portanto, a abertura bar
, com um editor de texto, por exemplo, abrirá o arquivo separado foo
. No entanto, a exclusão bar
apenas excluirá o atalho, 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 nenhum relacionamento 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 - esses são realmente o mesmo arquivo . Arquivos em sistemas de arquivos Unix são armazenados usando inodes ; um inode é basicamente a maneira 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 destino. Outra maneira de colocar isso é que todos os arquivos são realmente links físicos apontando para seus inodes. Criar um link direto para um arquivo apenas 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 um, ou nenhum.
Para entender isso mais claramente, use o ls -i
que mostra o inode associado a um arquivo. Vamos criar um link virtual 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, ambos foo
e HardLinkToFoo
têm o mesmo inode (16648029), enquanto o SoftLinkToFoo possui um diferente (16648036).
O que acontece se renomearmos foo
com mv foo bar
?
A cor vermelha indica um link flexível quebrado, cujo alvo não pode mais ser encontrado. Isso ocorre porque os links flexíveis apontam para o nome de um arquivo, não para o seu inode. Observe que, apesar de alterar o nome, o inode permanece o mesmo, portanto o hardlink está correto e ainda funciona.
Em resumo, links físicos são na verdade duas manifestações do mesmo arquivo; eles são ponteiros para a mesma seção do disco. Links flexíveis são apenas atalhos. Para fazer uma analogia no mundo real, os hardlinks são como dois números de telefone diferentes para a mesma linha telefônica e os soft links são como ter duas linhas telefônicas diferentes na mesma casa.