Pesquisa de site

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.

Artigos relacionados