Pular para o conteúdo principal

Capítulo 3.7 - Links Simbólicos e Hard Links

Objetivos de Aprendizagem​

Ao final deste capítulo, você será capaz de:

  • Compreender a diferença entre links simbólicos e hard links
  • Criar e gerenciar links simbólicos
  • Criar e gerenciar hard links
  • Escolher o tipo de link adequado para cada caso

Um link é uma referência para um arquivo. O Linux suporta dois tipos de links: simbólicos (soft) e hard links.


Características​

Um link simbólico é um ponteiro para outro arquivo ou diretório.

# Criar um link simbólico
ln -s /caminho/para/alvo link_simbolico
ln -s alvo.txt link.txt

# Ver para onde o link aponta
ls -l link.txt
readlink link.txt

Características:

  • Aponta para um nome de arquivo (não para o inode)
  • Pode apontar para arquivos inexistentes
  • Pode apontar para diretórios
  • Pode atravessar sistemas de arquivos
  • Identificado por l no ls -l

Exemplo​

# Criar um arquivo
echo "Conteúdo" > original.txt

# Criar um link simbólico
ln -s original.txt link.txt

# Verificar
ls -li
# 12345 -rw-r--r-- 1 user group 8 Jan 1 12:00 original.txt
# 12346 lrwxrwxrwx 1 user group 12 Jan 1 12:01 link.txt -> original.txt

# Ler via o link
cat link.txt # Exibe "Conteúdo"

# Remover o original
rm original.txt

# O link ainda existe, mas está quebrado
cat link.txt # Erro: No such file or directory
ls -l link.txt # link.txt -> original.txt (vermelho, quebrado)

Vantagens​

  • Pode apontar para diretórios
  • Pode atravessar sistemas de arquivos
  • Fácil de identificar (seta no ls -l)
  • Pode apontar para arquivos inexistentes (para criação futura)

Desvantagens​

  • Links quebrados se o alvo for removido
  • Levemente mais lento (diferenciação)
  • Pode criar loops

Características​

Um hard link é uma referência direta ao mesmo inode de outro arquivo.

# Criar um hard link
ln alvo.txt link.txt

# Verificar (mesmo inode)
ls -li
# 12345 -rw-r--r-- 2 user group 8 Jan 1 12:00 alvo.txt
# 12345 -rw-r--r-- 2 user group 8 Jan 1 12:00 link.txt
# Mesmo inode (12345), mesmo conteúdo

Características:

  • Referencia o mesmo inode
  • Mesmo arquivo (vários nomes)
  • Não pode apontar para diretórios
  • Não pode atravessar sistemas de arquivos
  • Contagem de links no ls -l (2 no exemplo)

Exemplo​

# Criar um arquivo
echo "Conteúdo" > original.txt

# Criar um hard link
ln original.txt link.txt

# Verificar
ls -li
# Mesmo inode, mesmo tamanho, mesmo conteúdo

# Modificar via um link
echo "Novo conteúdo" > link.txt

# Verificar o original
cat original.txt # Exibe "Novo conteúdo"

# Remover o original
rm original.txt

# O link ainda funciona!
cat link.txt # Exibe "Novo conteúdo"
# Ver a contagem de links
ls -l arquivo.txt
# -rw-r--r-- 3 user group 1024 Jan 1 12:00 arquivo.txt
# O "3" indica 3 hard links para este arquivo

# O arquivo só é realmente removido quando
# a contagem de links chega a 0

Vantagens​

  • Não há link quebrado (mesmo se um nome for removido)
  • Desempenho idêntico ao original
  • Não há diferenciação

Desvantagens​

  • Não pode apontar para diretórios
  • Não pode atravessar sistemas de arquivos
  • Menos flexível

Comparação​

CaracterísticaLink SimbólicoHard Link
InodeDiferenteMesmo
DiretóriosSimNão
Sistemas de arquivosSimNão
Arquivo inexistenteSimNão
Remoção do alvoLink quebradoFunciona
DesempenhoLevemente mais lentoIdêntico
Identificaçãol no ls -lMesmo inode

Casos de Uso​

Quando usar:

  • Apontar para diretórios
  • Criar atalhos
  • Apontar para arquivos em outros sistemas de arquivos
  • Configuração flexível

Exemplos:

# Atalho para diretório
ln -s /var/www/html ~/www

# Versão atual
ln -s app-v2.0 app-current

# Configuração
ln -s /etc/nginx/sites-available/meusite /etc/nginx/sites-enabled/

Quando usar:

  • Backup de segurança (vários nomes)
  • Economia de espaço (mesmo arquivo)
  • Desempenho crítico

Exemplos:

# Vários nomes para o mesmo arquivo
ln arquivo.txt backup.txt
ln arquivo.txt arquivo_arquivo.txt

# Todos apontam para o mesmo inode

Comandos Úteis​

# Ver todos os links para um inode
find /home -inum 12345

# Encontrar links simbólicos quebrados
find /home -type l ! -exec test -e {} \; -print

# Contar hard links
stat arquivo.txt | grep Links

# Ver para onde aponta um link simbólico
readlink -f link.txt # Caminho absoluto resolvido

Resumo​

Neste capítulo, você aprendeu:

Links Simbólicos: Ponteiros para nomes de arquivos (ln -s)
Hard Links: Referências ao mesmo inode (ln)
Diferenças: Simbólicos mais flexíveis, hard links mais robustos
Casos de uso: Simbólicos para diretórios/flexibilidade, hard links para robustez
Gerenciamento: ls -li para visualizar, readlink para simbólicos


Próximos Passos​

Capítulo 3.8: Tipos de Sistemas de Arquivos
Lab 3.3: Busca e Links


Capítulo criado em: Dezembro 2024