Aprenda a usar links simbólicos e hardlinks no Linux

Por Felipe Arruda

Links simbólicos são arquivos que funcionam como atalhos ou referência a outro arquivo ou diretório. Apesar de diferentes, a grosso modo podemos pensar nos links simbólicos como sendo semelhantes aos atalhos de softwares na área de trabalho: ao clicar neles, executamos um programa que está armazenado em outro local do computador e, às vezes, até mesmo em outra máquina. Mas tudo funciona de maneira tão transparente que parece que estamos clicando sobre o executável original.

O uso de links simbólicos no Linux é muito comum: softwares diversos costumam empregar links para bibliotecas em vez de replicar o arquivo em outro diretório. Essa é uma boa maneira, inclusive, de economizar espaço em disco e recursos do sistema.

Como criar um link simbólico

É muito fácil criar um link simbólico no Linux. Basta usar o comando ln com a seguinte sintaxe:

ln -s caminho/arquivooriginal caminho/arquivolinksimbólico

Digamos que você deseje criar um link no seu diretório home para o arquivo /var/log/boot.log. Nesse caso, o comando seria:

ln -s /var/log/boot.log /home/usuario/novoarquivo

Quando um link simbólico é criado, ele passa a referenciar o arquivo original. Isso significa que ao ler ou editar o link simbólico, você estará lendo e editando o arquivo original. Porém, caso você exclua o link simbólico, saiba que o arquivo original continuará intacto. O contrário já não acontece: se o arquivo original for excluído ou renomeado, o link simbólico continua existindo, mas apontando para lugar nenhum.

Inodes e hardlinks

No sistema de arquivos do Linux e de outros Sistemas Operacionais baseados em Unix, um inode é uma estrutura de dados que repesenta um arquivo ou diretório. Sendo assim, um arquivo deve ter um inode único dentro de determinada partição. Esse índice armazena propriedades como data de criação do arquivo, bloco físico em que ele está localizado no disco rígido, etc. Quando criamos um link simbólico (com o parâmetro -s), arquivo original e links possuem inodes diferentes e você pode conferir com o comando ls -i arquivo.

Porém, o ln permite criar uma outra categoria de link, que possui relações mais fortes com o arquivo orginal. Por compartilhar o mesmo inode, os chamados hardlinks possuem diferenças bastante claras em relação aos links do tipo simbólico:

  • só podem referenciar arquivos, e nunca diretórios;
  • não podem referenciar arquivos em outros volumes ou partições;
  • hardlinks continuam funcionando mesmo que o arquivo original tenha sido apagado; e
  • hardlinks fazem referência ao inode do arquivo original. Ao contrário dos softlinks, que referenciam nomes de arquivos e diretórios, os hardlinks referenciam uma posição física da partição.

Para criar um hardlink, basta seguir a sintaxe do comando ln já apresentada neste tutorial, mas sem o parâmetro -s:

ln caminho/arquivo-original caminho/link

Esse tipo de link pode ser usado em diversos cenários práticos, sendo que um dos mais comuns é o backup: se o mesmo arquivo aparece em mais de uma pasta, por exemplo, basta copiá-lo uma vez e "replicá-lo" por meio de hardlinks. Caso o original ou link seja atualizado, todos também serão e, em caso de o original ser removido, os links ainda continuam funcionando. Mais uma vez: economia de espaço em disco de recursos do sistema.

Esse é um dos truques usados, por exemplo, pela Time Machine, da Apple. Caso tenha ficado curioso, o site pondini.org possui um artigo em inglês com mais detalhes sobre o uso de hardlinks pelo gadget da Maçã.

Este artigo faz parte de nossa biblioteca de conteúdo "Tudo o que você precisa saber sobre o Linux". Não deixe de acessar e conferir todo o conteúdo publicado sobre o Pinguim.

Fonte: http://www.nixtutor.com/freebsd/understanding-symbolic-links/