Explicando Soft Link e Hard Link no Linux com exemplos
Link simbólico e link físico explicados com exemplos
O que é soft link e hard link no Linux?
Um link simbólico ou link virtual é um link real para o arquivo original, enquanto um link físico é uma cópia espelhada do arquivo original. Se você excluir o arquivo original, o link virtual não terá valor, pois aponta para um arquivo inexistente.
Mas no caso do hard link, é totalmente o oposto. Mesmo se você excluir o arquivo original, o link físico ainda conterá os dados do arquivo original. Porque o link físico atua como uma cópia espelhada do arquivo original.
Em poucas palavras, um link suave
- pode cruzar o sistema de arquivos,
- permite que você faça links entre diretórios,
- tem número de inode e permissões de arquivo diferentes do arquivo original,
- as permissões não serão atualizadas,
- possui apenas o caminho do arquivo original, não o conteúdo.
Um link rígido
- não pode ultrapassar os limites do sistema de arquivos (ou seja, um hardlink só pode funcionar no mesmo sistema de arquivos),
- não é possível vincular diretórios,
- tem o mesmo número de inode e permissões do arquivo original,
- as permissões serão atualizadas se alterarmos as permissões do arquivo de origem,
- possui o conteúdo real do arquivo original, para que você ainda possa visualizar o conteúdo, mesmo que o arquivo original tenha sido movido ou removido.
Ainda não entendeu? Bem, permita-me mostrar alguns exemplos práticos.
Como criar Soft Link ou Link Simbólico
Vamos criar um diretório vazio chamado "test"
.
mkdir test
Mude para o diretório "test"
:
cd test
Agora, crie um novo arquivo chamado source.file
com alguns dados conforme mostrado abaixo.
echo "Welcome to OSTechNix" >source.file
Vamos visualizar os dados do source.file.
$ cat source.file
Welcome to OSTechNix
Bem, o source.file
foi criado.
Agora, crie um link simbólico ou virtual para o source.file
.
Para fazer isso, execute:
ln -s source.file softlink.file
Vamos comparar os dados de source.file
e softlink.file
.
$ cat source.file
Welcome to OSTechNix
$ cat softlink.file
Welcome to OSTechNix
Ver dados do link simbólico
Como você pode ver na saída acima, softlink.file
exibe os mesmos dados que source.file
.
Vamos verificar os inodes e permissões de softlink.file
e source.file
.
ls -lia
Exemplo de resultado:
total 12
11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 .
4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..
11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file
11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file
Verifique os inodes e permissões do link simbólico
Como podemos ver na captura de tela acima, o número do inode (11665731
vs 11665692
) e permissões de arquivo (lrwxrwxrwx
vs -rw-r--r--
) são diferente, embora o softlink.file
tenha o mesmo conteúdo que source.file
. Conseqüentemente, está provado que o soft link não compartilha o mesmo número de inode e permissões do arquivo original.
Agora, remova o arquivo original (ou seja, source.file
) e veja o que acontece.
rm source.file
Verifique o conteúdo do softlink.file
usando o comando:
cat softlink.file
Exemplo de resultado:
cat: softlink.file: No such file or directory
Verifique o conteúdo do link simbólico
Como você pode ver acima, não existe tal arquivo ou diretório chamado softlink.file
depois que removemos o arquivo original (ou seja, source.file
).
Então, agora entendemos que o soft link é apenas um link que aponta para o arquivo original. O softlink é como um atalho para um arquivo. Se você remover o arquivo, o atalho será inútil.
Como você já sabe, se remover o soft link, o arquivo original ainda estará disponível.
Leitura sugerida:
- Como listar links simbólicos no Linux
- Como encontrar links simbólicos quebrados e excluí-los no Linux
Como criar um link físico
Crie um arquivo chamado source.file
com alguns conteúdos conforme mostrado abaixo.
echo "Welcome to OSTechNix" >source.file
Vamos verificar o conteúdo do arquivo.
$ cat source.file
Welcome to OSTechNix
O source.file
foi criado agora.
Agora, vamos criar o link físico para source.file
conforme mostrado abaixo.
ln source.file hardlink.file
Criar link físico
Verifique o conteúdo de hardlink.file
:
$ cat hardlink.file
Welcome to OSTechNix
Você verá que hardlink.file
exibe os mesmos dados que source.file.
Vamos verificar o inode e as permissões de hardlink.file
e source.file
.
ls -lia
Exemplo de resultado:
total 16
11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 .
4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..
11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file
11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file
Verifique os inodes e permissões do link físico
Agora, vemos que hardlink.file
e source.file
têm o mesmo número de inodes (11665692
) e permissões de arquivo (-rw-r--r--
). Conseqüentemente, está provado que o arquivo de link físico compartilha o mesmo número de inodes e permissões do arquivo original.
Atenção: se alterarmos as permissões em source.file
, a mesma permissão também será aplicada a hardlink.file
.
Agora, remova o arquivo original (ou seja, source.file
) e veja o que acontece.
rm source.file
Verifique o conteúdo de hardlink.file
usando o comando:
cat hardlink.file
Exemplo de resultado:
Verifique o conteúdo do link físico
Como você pode ver acima, mesmo que eu tenha excluído o arquivo de origem, posso visualizar o conteúdo do hardlink.file
. Assim, está provado que o Hard link compartilha o mesmo número de inode, as permissões e os dados do arquivo original.
Então, qual é a diferença entre o link físico e o arquivo copiado normal?
Você deve estar se perguntando por que criaríamos um link físico enquanto podemos copiar/colar facilmente o arquivo original? Criar um link físico para um arquivo é diferente de copiá-lo.
Se você copiar um arquivo, ele apenas duplicará o conteúdo. Portanto, se você modificar o conteúdo de um arquivo (original ou link físico), isso não terá efeito no outro.
No entanto, se você criar um link físico para um arquivo e alterar o conteúdo de qualquer um dos arquivos, a alteração será vista em ambos.
Vamos dar uma olhada no source.file.
$ cat source.file
Welcome to OSTechNix
O arquivo fonte possui uma única linha que diz - Bem-vindo ao OSTechNix.
Acrescente uma nova linha, por exemplo "Bem-vindo ao Linux" em source.file
ou hardlink.file
.
echo "Welcome to Linux" >>source.file
Agora verifique o conteúdo de ambos os arquivos.
$ cat hardlink.file
Welcome to OSTechNix
Welcome to Linux
$ cat source.file
Welcome to OSTechNix
Welcome to Linux
Atualizar o conteúdo do link físico
Ver? As alterações que acabamos de fazer em source.file
são atualizadas em ambos os arquivos. Significado - ambos os arquivos (fonte e link físico) são sincronizados.
Quaisquer alterações que você fizer em qualquer arquivo serão refletidas em outro. Se você normalmente copiar/colar o arquivo, não verá nenhuma nova alteração em outro arquivo.
Para mais detalhes, verifique as páginas de manual.
man ln
Conclusão
Neste guia, discutimos o que é soft link e hard link no Linux, como criar softlink e hardlink com comandos de exemplo e, finalmente, explicamos a diferença entre hardlink e arquivo copiado normal.
Espero que você tenha uma ideia básica de como usar link simbólico ou virtual e link físico no Linux.