Aqui nós temos que enfrentar um conceito errado muito comum, mesmo entre usuários UNIX®, que está principalmente ligado ao fato de que links da maneira como vimos até agora (erroneamente chamados de “hard” links) estão somente associados com arquivos regulares (e nós vimos que este não é o caso — já que até mesmo links simbólico são referenciados “linked”). Mas isto requer que primeiro expliquemos o que são links simbólicos (“soft” links ou “symlinks”).
Links simbólicos são arquivos de um tipo específico, cujo conteúdo é uma string arbitrária que aponta para um arquivo existente ou não. Quando você menciona um link simbólico na linha de comando ou em um programa, na verdade você está acessando o aquivo para o qual ele aponta, se ele existir. Por exemplo:
$ echo Hello >myfile $ ln -s myfile mylink $ ls -il total 4 169 -rw-rw-r-- 1 usuario1 usuario1 6 Dec 10 21:30 myfile 416 lrwxrwxrwx 1 usuario1 usuario1 6 Dec 10 21:30 mylink -> myfile $ cat myfile Hello $ cat mylink Hello
Você pode ver que o tipo de arquivo
para mylink
é l
, de
Link simbólico. Os direitos de
acesso para um link simbólico não são significantes: eles serã
sempre rwxrwxrwx
. Você também pode ver que ele
é um arquivo diferente de
myfile
, já que o número de seu inode é
diferente. Mas ele refere ao arquivo simbolicamente, então quando
você digita cat mylink, você irá na verdade
exibir o conteúdo do arquivo myfile
. Para
demonstrar que um link simbólico possui uma string arbitrária, nós
podemos fazer o seguinte:
$ ln -s "I'm no existing file" anotherlink $ ls -il anotherlink 418 lrwxrwxrwx 1 usuario1 usuario1 20 Dec 10 21:43 anotherlink -> I'm no existing file $ cat anotherlink cat: anotherlink: No such file or directory $
Mas os links simbólicos existem porque eles podem suprir várias limitações encontradas nos links normais ("“hard”"):
Você não pode criar um link para um inode em um diretório que está em um sistema de arquivo diferente do inode. A razão é simples: o contador do link é armazenado no próprio inode, e não podem ser compartilhados entre sistemas de arquivo. Mas os links simbólicos permitem isto;
Você não pode referenciar diretórios para evitar criar círculos no sistema de arquivo. Mas você pode fazer um link simbólico apontar para um diretório e utilizá-lo como se ele fosse um diretório de verdade.
Links simbólicos são então muito úteis em diversas circunstâncias, e normalmente, as pessoas tendem a utiliza-los para referenciar arquivos até mesmo quando um link normal poderia ser utilizado. Uma vantagem do link normal, é a de que você não perde o arquivo quando o “original” é apagado.
Por fim, se você observou com cuidado, você sabe que o tamanho de um link simbólico é apenas o tamanho da string dentro dele.