O que é Soft Link E Hard Link No Linux?
Um link simbólico ou soft link é um link real para o arquivo original, enquanto um link hard é uma cópia espelho do arquivo original. Se apagar o ficheiro original, o link soft não tem valor, porque aponta para um ficheiro inexistente. Mas no caso de uma ligação dura, é totalmente oposta. Mesmo que apague o ficheiro original, o link duro continuará a ter os dados do ficheiro original. Porque o link rígido funciona como uma cópia espelho do ficheiro original.
Em poucas palavras, um link suave
- pode atravessar o sistema de ficheiros,
- permite fazer a ligação entre directórios,
- tem um número de inode e permissões de ficheiro diferentes do ficheiro original,
- permissões não serão actualizadas,
- tem apenas o caminho do ficheiro original, não o conteúdo.
Um link rígido
- não pode ultrapassar os limites do sistema de ficheiros (i.e. Um hardlink só pode funcionar no mesmo sistema de ficheiros,
- não pode ligar directórios,
- tem o mesmo número de inode e permissões do ficheiro original,
- permissões serão actualizadas se alterarmos as permissões do ficheiro fonte,
- tem o conteúdo real do ficheiro original, para que ainda possa ver o conteúdo, mesmo que o ficheiro original tenha sido movido ou removido.
Ainda não o recebeu? Bem, permita-me mostrar-lhe alguns exemplos práticos.
Criar Soft Link ou Symbolic Link
Deixe-nos criar um directório vazio chamado “test”.
$ mkdir test
Mude para o diretório “test”:
$ cd test
Agora, crie um novo arquivo chamado source.file com alguns dados como mostrado abaixo.
$ echo "Welcome to OSTechNix" >source.file
Deixe-nos ver os dados do source.file.
$ cat source.fileWelcome to OSTechNix
Bem, o source.foi criado.
Agora, crie o link simbólico ou soft link para o source.file.
Para isso, execute:
$ ln -s source.file softlink.file
Deixe-nos comparar os dados do source.file e do softlink.file.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
Como você vê na saída acima, softlink.file exibe os mesmos dados do source.file.
Deixe-nos verificar os inodes e permissões do softlink.file e source.file.
$ ls -lia
Sample output:
total 1211665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file
Como vemos na imagem acima, o número do inode (11665731 vs 11665692) e as permissões dos ficheiros (lrwxrwxrwx vs -rw-r–r–r–) são diferentes, mesmo que o softlink.Assim, está provado que o link soft não partilha o mesmo número de inode e as mesmas permissões do ficheiro original.
Agora, remova o ficheiro original (i.e. source.file) e veja o que acontece.
$ rm source.file
Verifica o conteúdo do ficheiro softlink.file usando o comando:
$ cat softlink.file
Sample output:
cat: softlink.file: No such file or directory
Como vê acima, não existe tal ficheiro ou directório chamado softlink.file depois de termos removido o ficheiro original (i.e. source.file). Portanto, agora entendemos que o link soft é apenas um link que aponta para o ficheiro original. O softlink é como um atalho para um arquivo. Se você remover o arquivo, o atalho é inútil.
Como você já sabe, se você remover o link, o arquivo original ainda estará disponível.
Suggested read:
- Como listar links simbólicos no Linux
- Como encontrar links simbólicos quebrados e excluí-los no Linux
Criar link rígido
Criar um arquivo chamado fonte.arquivo com algum conteúdo como mostrado abaixo.
$ echo "Welcome to OSTechNix" >source.file
Deixe-nos verificar o conteúdo do arquivo.
$ cat source.fileWelcome to OSTechNix
source.file foi criado agora.
Agora, vamos criar o link rígido para o ficheiro.source.file como mostrado abaixo.
$ ln source.file hardlink.file
Verifica o conteúdo do hardlink.file.
$ cat hardlink.fileWelcome to OSTechNix
Vemos que o ficheiro.hardlink.file exibe os mesmos dados que o ficheiro.file.source.
Deixe-nos verificar o inode e as permissões de hardlink.file e source.file.
$ ls -lia
Sample output:
total 1611665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 .4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file
Agora, vemos que ambos hardlink.file e source.file têm o mesmo número de inodes (11665692) e permissões de ficheiro (-rw-r–r–). Assim, está provado que o ficheiro hard link partilha o mesmo número de inodes e permissões do ficheiro original.
Note: Se alterarmos as permissões no source.file, a mesma permissão será aplicada ao hardlink.file também.
Agora, remova o ficheiro original (i.e source.file) e veja o que acontece.
$ rm source.file
Check contents of hardlink.file using command:
$ cat hardlink.file
Sample output:
Como você vê acima, mesmo que eu deletei o arquivo source, eu posso ver o conteúdo do hardlink.file. Assim, está provado que o Hard link partilha o mesmo número de inode, as permissões e dados do ficheiro original.
Então, qual é a diferença entre Hard link e o ficheiro copiado normal?
Você pode estar se perguntando por que criaríamos um link rígido enquanto podemos facilmente copiar/colar o ficheiro original? Criar um link rígido para um arquivo é diferente de copiá-lo.
Se você copiar um arquivo, ele irá apenas duplicar o conteúdo. Então se você modificar o conteúdo de um arquivo (seja original ou link rígido), ele não tem efeito sobre o outro. No entanto se você criar um link rígido para um arquivo e alterar o conteúdo de qualquer um dos arquivos, a alteração será vista em ambos.
Deixe-nos dar uma olhada no source.file.
$ cat source.file Welcome to OSTechNix
O arquivo fonte tem uma única linha que diz – Bem-vindo ao OSTechNix.
Aplicar uma nova linha, por exemplo “Bem-vindo ao Linux” em source.file ou hardlink.file.
$ echo "Welcome to Linux" >>source.file
Agora verifique o conteúdo de ambos os ficheiros.
$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux
Ver? As alterações que acabámos de fazer no source.file são actualizadas em ambos os ficheiros. Significado – ambos os arquivos (fonte e link rígido) são sincronizados. Quaisquer alterações que você fizer em qualquer arquivo serão refletidas em outro arquivo. Se você normalmente copiar/colar o arquivo, você não verá nenhuma nova alteração em outro arquivo.
Para mais detalhes, verifique as páginas man.
$ man ln
É tudo por enquanto. Espero que você tenha uma idéia básica sobre links simbólicos ou soft e hard link.
Obrigado por parar por aqui!
Ajude-nos a ajudá-lo:
- Subscreva a nossa Newsletter por e-mail : Inscreva-se Agora
- Suporte OSTechNix : Doe via PayPal
- Download de E-Books e Vídeos grátis : OSTechNix no TradePub
- Conecte-se conosco: Reddit | Facebook | Twitter |LinkedIn |Feeds RSS
Dê um bom dia!!