Hard links vs symlinks

Entendendo a diferença entre links simbólicos e links físicos no Linux

Descubra as diferenças entre links simbólicos e links físicos no Linux. Saiba como criar e gerenciar hard links e symlinks para otimizar seu sistema de arquivos.

Comparação entre links simbólicos e links físicos no Linux com ilustração de um pinguim e fundo com código digital

Se você trabalha com sistemas de arquivos no Linux, provavelmente já ouviu falar sobre links simbólicos e links físicos. Esses dois tipos de links permitem que você crie atalhos ou referências para arquivos e diretórios, mas eles funcionam de maneiras bem diferentes. Saber quando e como usar cada um pode otimizar sua gestão de arquivos e evitar problemas comuns, como arquivos duplicados. Neste post, você aprenderá a diferença entre links simbólicos (symlinks) e links físicos (hard links), como criá-los, e em quais situações cada um é mais útil.

Pinguim segurando uma placa com a palavra 'links', representando o uso de links simbólicos e físicos no Linux

Um link físico (hard link) é uma referência direta a um arquivo ou diretório no sistema de arquivos. Quando você cria um hard link para um arquivo, ele aponta diretamente para o mesmo espaço de armazenamento no disco que o arquivo original. Isso significa que ambos os arquivos (o original e o link) compartilham o mesmo conteúdo, e alterações feitas em um serão refletidas no outro.

Exemplo de criação de um hard link:

ln arquivo_original.txt link_fisico.txt

Isso cria um arquivo chamado “link_fisico.txt” que é um hard link para “arquivo_original.txt”.

  1. Mesmo Inode: Links físicos compartilham o mesmo inode (identificador no sistema de arquivos) que o arquivo original. Isso significa que eles são essencialmente o mesmo arquivo.
  2. Tamanho e Conteúdo: O link físico tem o mesmo tamanho e conteúdo que o arquivo original, e qualquer modificação feita em um será refletida no outro.
  3. Exclusividade ao Mesmo Sistema de Arquivos: Links físicos só podem ser criados no mesmo sistema de arquivos. Eles não podem apontar para arquivos em partições ou dispositivos diferentes.

Um link simbólico (symlink) é como um atalho que aponta para outro arquivo ou diretório. Diferente de um hard link, ele não compartilha o mesmo inode nem o mesmo espaço de armazenamento que o arquivo original. Em vez disso, o symlink é um arquivo separado que contém o caminho para o arquivo original.

Exemplo de criação de um symlink:

ln -s arquivo_original.txt link_simbolico.txt

Isso cria um arquivo “link_simbolico.txt” que aponta para “arquivo_original.txt”.

  1. Diferente Inode: Um symlink possui um inode diferente do arquivo original, já que ele apenas aponta para o caminho do arquivo.
  2. Fácil de Identificar: Usando o comando ls -l, você pode identificar symlinks facilmente, pois eles são listados com o caminho do arquivo original ao lado.
  3. Ponteiros Flexíveis: Links simbólicos podem apontar para arquivos e diretórios em qualquer parte do sistema de arquivos, inclusive em diferentes partições ou até mesmo dispositivos de rede.
  4. Links Quebrados: Se o arquivo original for movido ou excluído, o symlink “quebra”, já que ele não contém o conteúdo real do arquivo, apenas o caminho.

1. Eficiência de armazenamento

Se você precisa criar múltiplas referências a um arquivo sem duplicar o espaço de armazenamento, os hard links são ideais. Como eles compartilham o mesmo inode, você pode ter várias instâncias de um arquivo sem ocupar mais espaço no disco.

2. Backup de arquivos

Hard links são frequentemente usados em sistemas de backup. Como eles não dependem de um caminho, se o arquivo original for movido, o hard link ainda manterá uma cópia do arquivo.

1. Flexibilidade na navegação

Symlinks são extremamente úteis para facilitar a navegação entre diferentes diretórios ou sistemas de arquivos. Por exemplo, você pode criar um symlink em sua pasta pessoal que aponta para um arquivo ou diretório em uma partição de backup ou em um dispositivo de rede.

2. Atalhos para ferramentas e bibliotecas

Desenvolvedores costumam usar symlinks para apontar para diferentes versões de bibliotecas ou programas. Isso permite trocar facilmente de uma versão para outra sem alterar o código ou os scripts que dependem desses arquivos.

Exemplos práticos

ln documento.txt copia_documento.txt

Isso cria um hard link chamado “copia_documento.txt” que aponta para o mesmo conteúdo que “documento.txt”.

ln -s /mnt/disco_externo/backup/arquivo.txt atalho_backup.txt

Isso cria um symlink chamado “atalho_backup.txt” que aponta para um arquivo localizado em outro dispositivo.

Use o comando ls -l para verificar se um arquivo é um link simbólico e para onde ele aponta:

ls -l atalho_backup.txt

Conclusão

Saber quando usar links simbólicos ou links físicos pode fazer toda a diferença na maneira como você gerencia arquivos no Linux. Enquanto os hard links são ideais para economizar espaço e manter referências persistentes, os symlinks oferecem flexibilidade e são perfeitos para criar atalhos e simplificar a navegação no sistema de arquivos. Ao dominar esses tipos de links, você melhora sua eficiência no gerenciamento de arquivos e ganha mais controle sobre seu sistema.

Experimente criar hard links e symlinks em seu próprio sistema para ver como cada um funciona. Não se esqueça de conferir nossos outros artigos para mais dicas sobre gerenciamento de arquivos no Linux!


Qual a diferença entre links simbólicos e links físicos no Linux?

Links simbólicos são como atalhos, enquanto links físicos compartilham o mesmo conteúdo e inode que o arquivo original.

Como criar um link simbólico no Linux?

Use o comando ln -s seguido do caminho do arquivo original e o nome do link. Exemplo: ln -s arquivo.txt link.txt.

Como criar um hard link no Linux?

Use o comando ln sem a opção -s. Exemplo: ln arquivo.txt link_fisico.txt.

O que acontece quando o arquivo original de um symlink é excluído?

O symlink “quebra”, tornando-se um link inútil, já que ele depende do caminho para o arquivo original.

Quando devo usar links físicos em vez de simbólicos?

Links físicos são ideais quando você precisa de múltiplas referências ao mesmo arquivo sem duplicar o espaço em disco. Eles são mais estáveis, pois não dependem de caminhos específicos.