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

Deixe uma resposta

O seu endereço de email não será publicado.