Link simbólico e hardlink

Publicado por Roberto Rodrigues da Silva em 21/10/2006

[ Hits: 234.074 ]

 


Link simbólico e hardlink



O link é um mecanismo que faz referência a outro arquivo ou diretório em outra localização. Os links são arquivos especiais e podem ser identificados com um "l" quando executado o comando: "ls -la".

Exemplo:

$ ls -la
lrwxr-xr--  1 roberto    roberto     5 2006-10-12 22:40 link -> teste.txt

Veja abaixo a descrição do dois tipos de links existentes no Linux.

Tipo simbólico


No link tipo simbólico, o link é um arquivo especial de disco do tipo link, que tem como conteúdo o caminho para chegar até o arquivo alvo.

Características:
  • Pode-se fazer links simbólicos em arquivos e diretórios;
  • O link simbólico e o arquivo alvo não precisam estar na mesma partição de disco;
  • Se o link simbólico for apagado/movido. Somente o link será apagado/movido;
  • Qualquer usuário pode criar/desfazer um link simbólico (respeitando as permissões).

Tipo hardlink


No link tipo hardlink, o link é apontado para o mesmo inode do arquivo alvo, sendo assim, os dois arquivos serão o mesmo.

Características:
  • Não é possível fazer um hardlink para um diretório;
  • Somente é possível fazer hardlink em arquivos que estejam em uma mesma partição de disco;
  • Se o hardlink for apagado/movido, você estará apagando/movendo o arquivo alvo;
  • Somente o usuário root pode criar/desfazer hardlinks.

Criando links


O comando ln é utilizado para criar links entre dois arquivos ou para um diretório.

Sintaxe:
ln [OPÇÕES]... [-T] ALVO NOME_LINK   (1a forma)
ln [OPÇÕES]... ALVO                  (2a forma)
ln [OPÇÕES]... ALVO... DIRETÓRIO     (3a forma)
ln [OPÇÕES]... -t DIRETÓRIO ALVO...  (4a forma)
Explicando:
  • ALVO: Diretório ou arquivo de onde será feito o link;
  • NOME_LINK: Nome do link que será criado;
  • OPÇÕES:
    -s
        Cria um link simbólico.
    -v
        Modo verbose.

Exemplos:

1 - Criando um link simbólico chamado "emulador" para o diretório /home/roberto/download/emulador_n64/:

$ ln -s /home/roberto/download/emulador_n64/ emulador

Note que o link simbólico é identificado com o "l" no início.

$ ls -lah | grep emulador lrwxrwx--x  1 roberto    roberto      36 2006-10-12 22:42 emulador -> /home/roberto/download/emulador_n64/

2 - Criando um hardlink chamado "texto.txt" apontando para o arquivo "alvo_hardlink.txt":

$ ln alvo_hardlink.txt texto.txt

Note que o arquivo "alvo_hardlink.txt" e o arquivo texto.txt possuem o mesmo Inode e o mesmo Device.

$ stat alvo_hardlink.txt | grep Inode
Device: 304h/772d       Inode: 3057948     Links: 2

$ stat texto.txt | grep Inode
Device: 304h/772d       Inode: 3057948     Links: 2

Outras dicas deste autor

Linux - Brincando com o comando ifconfig

Configurando proxy no APT-GET

Leitura recomendada

Montando Linux no Linux / mount em Linux / Linux para Linux

Erro "unknown filesystem type 'LVM2_member'" - como montar LVM sem alterar configurações no HD convidado

Projeto Root - Deduplicação de Dados com OpenDedup

Mapeando unidade Linux utilizando CIFS

Montando NTFS (inclusive de XP) no Linux

  

Comentários
[1] Comentário enviado por rafamb em 21/10/2006 - 22:01h

Bela dica amigo já gravei nos favoritos, parabéns.

Abraços

Rafael

[2] Comentário enviado por robertors em 22/10/2006 - 00:09h

Ola, Rafamb.

Obrigado !

Qualquer coisa me envia um e-mail..

valeu. Abraços.

[3] Comentário enviado por raphaelwct em 08/08/2007 - 02:37h

Bom Artigo !

[4] Comentário enviado por kellycneves em 15/08/2007 - 14:05h

como faço para conseguir o programa qtparted, porque tenho um computador com linux e que necessito colocar windows,

como não quero tirar o linux porque já estou acostumada e gosto muito dele, estou precisando particionar, mas o único programa que consegui foi o partition magic e não funcionou no linux.

O que fazer

Valeu

Bjs

[5] Comentário enviado por satrianni em 18/08/2009 - 00:24h

Desculpe, mas, particularmente falando, está muito técnico, acredito que poderia dar exemplos mais fáceis.

[6] Comentário enviado por alisson.bertochi em 23/11/2011 - 08:27h

Excelente, parabéns!

[7] Comentário enviado por m4cgbr em 12/05/2012 - 06:20h

Tem como quebrar um hard link?

Exemplo: Eu tenho minha partição /home em outro disco, ai precisei reinstalar meu Linux Mint 12, o problema é que quando eu mando exibir os ícones na área de trabalho, ele não exibe os ícones padrões (Meu Computador, Lixheira, etc) ele exibe os links de todas as subpastas do meu usuário, exemplo: Imagens, Vídeos, Documentos, Área de Trabalho e o pior, como hard link entende?


Eu quero exibir ícones na área de trabalho, mas os padrões e mais os que eu for adicionando! To usando Linux Mint 12 com Gnome

Agradeço se alguém tiver uma dica, to apanhando ainda no X.

Vlw


[8] Comentário enviado por vinibarros em 28/08/2012 - 21:02h

Como criar um link simbólico /Users tendo como diretório de origem /home ?
alguém pode me ajudar? grato

[9] Comentário enviado por Anne_01 em 22/10/2012 - 22:37h

Muito, muito obrigada. Foi a primeira vez que conseguir fazer algo funcionar somente com as dicas, sem pedir para os experts. #iniciante

[10] Comentário enviado por modicow em 05/12/2012 - 22:31h

Pude verificar e entender perfeitamente o funcionamento de link simbolico e o hard link através do que escreveu, porém algumas fontes informam que o link simbolico apenas utiliza uma referência ao arquivo, uma espécie de alias, onde o ponteiro é voltado para o arquivo. Já no hard link algumas contradições na prática pude observar; Na descrição quando se refere a "Se o hardlink for apagado/movido, você estará apagando/movendo o arquivo alvo; ". Na prática quando qualquer arquivo é criado Ex. #touch teste.txt; stat teste.txt | grep Inode; o arquivo apresenta o número do seu Inode e o Link = 1, isso quer dizer que apenas um arquivo referencia o inode. É como se qualquer arquivo no linux fosse um hard link. Criando um hard link observe que os dois terão o mesmo numero de inode com o link = 2. Com isso, se for criado um hard link entre dois arquivos e for removido qualquer um, o outro assume a integra do arquivo. Na prática verifiquei dessa forma. Abraço

[11] Comentário enviado por bremaya em 03/04/2014 - 18:30h

Muito boa diaca, já favoritada! Ops.: Exclua esse comentário!

[12] Comentário enviado por bremaya em 03/04/2014 - 18:31h

Muito boa dica, já favoritada!

[13] Comentário enviado por bremaya em 03/04/2014 - 18:32h

É assim que eu entendo também...

[14] Comentário enviado por marcoscsouza em 15/10/2014 - 22:00h

Acho que há uma informação errada amigo, quanto a hardlink você fala o seguinte:

"Se o hardlink for apagado/movido, você estará apagando/movendo o arquivo alvo;"

Na verdade, o que você estará apagando é apenas uma das referências para o arquivo alvo, pois o hardlink é apenas um novo nome apontando para o mesmo inode do arquivo original.

Abraço.

[15] Comentário enviado por raulgrangeiro em 28/12/2014 - 22:25h

Muito bom. Obrigado. Deus o abençoe!

[16] Comentário enviado por jmarcellopereira em 03/09/2015 - 12:31h


ola a todos
estou com um problema:
instalei o octave e não sei porque, toda vez que digito octave no terminal abre a interface GUI (octave --force-gui) do octave e nao o terminal do octave como é o certo. como posso consertar isso?

[17] Comentário enviado por JULLYANNAGOMES em 22/04/2016 - 16:12h

VENDO LINK DEDICADO PARA TODO O BRASIL 84-9-8782-8564



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts