6. Links Simbólicos, Limitação de “Hard” Links

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”"):

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.