Thursday, October 12, 2006

Linux - Links simbólicos e hardlinks

Um 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 o "l" quando executado o comando: ls -la
Exemplo: lrwxr-xr-- 1 roberto roberto 5 2006-10-12 22:40 link -> teste

Conteúdo:
1 - Tipos de links existentes no Linux
2 - Criando links
3 - Exemplos

Obs.: Neste e em outros documentos que eu escrevi a formatação do texto possui os seguintes significados:

- O "#" significa que o comando dever ser executado como usuário "root".
- O "$" significa que o comando deve ser executado como usuário sem privilégios.

1 - 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.

2 - Criando links:

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

Sintaxe:

ln [OPCOES]... [-T] ALVO NOME_LINK (1a forma)
ln [OPCOES]... ALVO (2a forma)
ln [OPCOES]... ALVO... DIRETORIO (3a forma)
ln [OPCOES]... -t DIRETORIO ALVO... (4a forma)

Explicando:

ALVO
Diretório ou arquivo de onde será feito o link.
NOME_LINK
Nome do link que será criado.
OPCOES
-s
Cria um link simbólico.
-v
Modo verbose.

3 - Exemplos:

- 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 inicio.

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

- 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 possuiem 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

FIM

Referência:
Guia Foca Linux - Comandos

Recursos:
Manual do comando ln

4 Comments:

At 7:27 AM, Blogger Bed said...

Muito clara a tua explanação. Tenho uma dúvida sobre o tema. Contextualizarei para facilitar o entendimento.
Tenho uma máquina com dois HDs. Monto particões diferentes em cada um dos HDs. Posso, de alguma forma,
criar um link que vincule HDs diferentes ? Se não for via link, conhece alguma forma de se conseguir o proposto ?
Grato
/Bed

 
At 11:05 AM, Blogger Giovanni said...

ei! cade os posts ? :)

 
At 5:49 AM, Blogger Thiago Ruiz said...

tah na hora de atualiza esse troço meu fio!

 
At 12:13 PM, Blogger birasblog said...

muito bom!

 

Post a Comment

<< Home