Link simbólico e hardlink
Dica publicada em Linux / Sistema de Arquivos
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.
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:
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:
O comando ln é utilizado para criar links entre dois arquivos ou para um diretório.
Sintaxe:
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
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.
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
Abraços
Rafael