No mundo Linux, tudo é tratado como arquivo, incluindo diretórios, dispositivos e links. Entre os tipos de links, dois conceitos costumam gerar dúvidas entre iniciantes e até mesmo entre administradores mais experientes: hard links e soft links (symlinks). Entender a diferença entre eles é essencial tanto para a administração diária quanto para provas de certificação, como o LPI 101.
O que é um Hard Link?
Um hard link é, basicamente, outra entrada de diretório que aponta diretamente para o mesmo inode (identificador interno de arquivos no sistema de arquivos) do arquivo original. Em outras palavras:
- O conteúdo do arquivo não é duplicado.
- Ambos os arquivos compartilham exatamente o mesmo inode.
- Se o arquivo original for removido, o conteúdo permanece acessível enquanto houver pelo menos um hard link apontando para aquele inode.
Como criar um hard link
ln arquivo_original hardlink
Por exemplo:
ln arquivo.txt copia_hard.txt
Agora, arquivo.txt e copia_hard.txt são apenas dois nomes para o mesmo conteúdo.
Características importantes do hard link:
- Só funciona no mesmo sistema de arquivos (mesmo filesystem).
- Não pode ser criado para diretórios (por padrão).
- Não aponta para o caminho, e sim diretamente para o inode.
O que é um Soft Link (Symbolic Link)?
Um soft link (ou symbolic link) é um tipo especial de arquivo que contém um caminho (path) apontando para outro arquivo ou diretório.
- É como um atalho.
- Se o arquivo original for removido, o link simbólico “quebra” (fica dangling, ou órfão).
- Pode apontar para arquivos e diretórios, inclusive em outros sistemas de arquivos ou dispositivos.
Como criar um soft link
ln -s arquivo_original link_suave
Por exemplo:
ln -s arquivo.txt atalho.txt
Agora atalho.txt contém o caminho para arquivo.txt.
Características importantes do soft link:
- Pode apontar para qualquer lugar, inclusive diretórios ou arquivos em outras partições.
- Permite apontar para caminhos relativos ou absolutos.
- Pode existir mesmo que o arquivo original ainda não exista (útil em alguns scripts e sistemas).
Resumindo as diferenças:
| Característica | Hard Link | Soft Link (Symlink) |
|---|---|---|
| Tipo de ligação | Aponta para o inode | Aponta para o caminho |
| Mesmo filesystem | Sim | Não (pode ser em qualquer lugar) |
| Diretórios | Normalmente não | Sim |
| Sobrevivência ao apagar original | Sim (enquanto houver links) | Não (vira link quebrado) |
| Comando | ln | ln -s |
Quando usar cada um?
- Hard Link: quando você quer ter múltiplos nomes para o mesmo conteúdo, com redundância de nomes mas sem duplicação de dados.
- Soft Link: quando você quer criar atalhos flexíveis, apontar para diretórios, sistemas remotos ou fazer links relativos.
Exemplo prático simples
echo "Conteúdo de teste" > arquivo.txt
ln arquivo.txt hardlink.txt
ln -s arquivo.txt softlink.txt
ls -li
O ls -li mostra os inodes. Note que arquivo.txt e hardlink.txt terão o mesmo inode, já softlink.txt terá um inode diferente.
Conclusão
Entender as diferenças entre hard links e soft links é essencial para administrar sistemas Linux com eficiência e segurança. Além disso, é um tema frequente nas certificações como o LPI 101. Saber quando usar cada tipo de link pode evitar muitos problemas de gerenciamento de arquivos no dia a dia.
