Entendendo os links e links simbólicos

Vejo ainda hoje muita gente com dúvidas em relação a links no linux.

Vamos entender as diferenças entre links (hard links) e links simbólicos (symlinks) e as vantagens e desvantagens de cada um.

O que são links

Links são pseudo arquivos que apontam para um arquivo real.

O conceito pode parecer um pouco estranho a princípio, mas os links são muito úteis e são muito utilizados no Linux.

Existem dois tipos de links, os links simbólicos e os hard links.

Links simbólicos são pequenos arquivos que apontam para um outro arquivo no sistema de arquivos. Um link simbólico pode apontar para um arquivo em qualquer lugar, seja no próprio sistema de arquivos onde ele está localizado, seja em outro sistema de arquivos e, até mesmo em sistemas de arquivos remotos, como NFS, por exemplo. Podem também apontar para diretórios. Por ser um arquivo, um link simbólico ocupa espaço – pouco, é verdade – no sistema de arquivos.Você pode ver se um arquivo é na verdade um link simbólico, dando um ls -l no diretório onde ele se encontra. Os links simbólicos contém um l ? esquerda da lista de permissões e não contém permissões na verdade. As permissões do arquivo real são usadas. Se o arquivo real for apagado o link simbólico vira um “link morto” (dead link), ou seja, um link que aponta para um local que não existe.O comando para a criação de um link simbólico é
[root@host] # ln -s /caminho/arquivo/real linkHard linksHard links não são links na verdade. São apenas uma cópia de uma entrada do sistema de arquivos. As duas entradas contém nomes diferentes mas apontam para o mesmo local físico no disco (inode, no caso de sistemas de arquivos ext2 e ext3) compartilhando, portanto, além do mesmo conteúdo as mesmas permissões. Se o arquivo verdadeiro for apagado, o hard link continua apontando para o mesmo local físico sendo, portanto, acessível da mesma forma.O problema dos hard links é que eles têm duas limitações importantes:o arquivo e o hard link que aponta pra ele devem obrigatoriamente estar localizados no mesmo sistema de arquivos já que o hard link aponta para um endereço físico (inode) e não se pode garantir que estes endereços sejam únicos em vários sistemas de arquivos. Suponha, por exemplo, um arquivo localizado no inode 50 no sistema de arquivos hda3. Não se pode garantir que em outro sistema de arquivos, hda5 por exemplo, não haja um outro arquivo com número de inode 50.A outra limitação é que um hard link não pode apontar para um diretório. Hard links não ocupam espaço no sistema de arquivos.O comando para a criação de um hard link é
[root@host] # ln /caminho/arquivo/real link

Por que usar links

Um exemplo do uso de links são os scripts de inicialização do linux. Aqueles localizados em /etc/rc.d/rcx.d (1 <= x <=6).

Os arquivos contidos neste diretório são na verdade links simbólicos para os arquivos verdadeiros em /etc/rc.d/init.d/. Dessa forma, se for necessário fazer alguma alteração nestes scripts, elas serão feitas apenas nos arquivos em init.d e as mudanças teriam efeito em todos os links em rcx.d. Ou seja, uma alteração apenas tem efeito em diversos locais, economizando tempo e evitando inconsistências.

Exemplo:
[root@host] # ls -l /etc/rc.d/rc5.d/*httpd*
lrwxrwxrwx 1 root root Aug 20 0:00 S85 httpd -> ../init.d/httpd

O arquivo real é /etc/rc.d/init.d/httpd e /etc/rc.d/rc5.d/S85httpd é um link simbólico para ele.

Hard links não são tão comuns quanto links simbólicos, mas podem ser úteis quando se deseja ter a segurança de que se o arquivo original for apagado, o link continue sendo acessível.

[update]Como bem observou o nosso amigo Daniel Santana, tinha um erro no texto. Corrigido:
“O comando para a criação de um hard link

simbólico é”
Desculpe a falha e obrigado pelo aviso!

[update 2]Outra boa observação em um comentário, dessa vez no br-linux.org.
O leitor ldss observou que eu esqueci de explicar como visualizar um hard link. Aí vai:
[root@host] # ls -li arquivo hardlink
2153 rwxr–r– 1 bruno bruno Aug 30 14:59 arquivo
2153 rwxr–r– 1 bruno bruno Aug 30 18:00 hardlink
O que precisamos observar é o primeiro número, 2153, que é o número do inode. Perceba que esse número é igual para o arquivo e para o hardlink. Ok?

Gostou dessa matéria?

Inscreva seu email para receber atualizações com as últimas publicações do nosso blog.
[jetpack_subscription_form show_subscribers_total="false" button_on_newline="false" custom_font_size="16px" custom_border_radius="0" custom_border_weight="1" custom_padding="15" custom_spacing="10" submit_button_classes="" email_field_classes="" show_only_email_and_button="true" success_message="Sucesso! Enviamos um e-mail para confirmar a sua assinatura. Encontre o e-mail agora e clique em 'Confirmar' para iniciar a inscrição."]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *