Desenvolvimento

5 mar, 2013

DicasLPI 104.6 – Criar e alterar links simbólicos e hardlinks

Publicidade

Algumas vezes, é necessário ter acesso a um arquivo em múltiplas localidades de um sistema de arquivos. Para evitar a necessidade de criar diversas cópias do arquivo, é necessário usar um link. Um fato interessante na utilização de links é que os mesmos não ocupam muito espaço, uma vez que eles apenas adicionam um bit de metadados ao sistema de arquivos, sendo, portanto muito mais eficientes do que o uso de cópias separadas.

Hardlinks (links físicos)

Os hardlinks são um ou mais nomes que um inode do sistema de arquivos pode ter. Todo arquivo criado é, necessariamente, um hardlink para o seu inode correspondente. Novos hardlinks são criados usando o comando ln:

lsi1

Observando a figura acima, palmeiras_B.txt e palmeiras_2013.txt são hardlinks para o mesmo inode 1314150. Hardlinks para o mesmo inode possuem a mesma permissão, donos, tamanho e data, pois esses atributos são registrados diretamente nos inodes.

lsl1

O número 2, na segunda coluna de informações, demonstra que há dois hardlinks para o inode correspondente ao arquivo  palmeiras_B.txt. Um arquivo somente é apagado quando todos seus hardlinks também forem excluídos. Um detalhe a ser observado sobre hardlinks é que somente pode ser criado no mesmo sistema de arquivos. Outra observação: não é possível criar hardlinks de diretórios.

Obs: Se você ficou com dúvida sobre inodes acesse este link.

Softlinks (links simbólicos)

Um link simbólico é simplesmente um ponteiro para outro nome de arquivo. Quando o Linux abre um link simbólico, ele lê o ponteiro e então encontra o arquivo correspondente, que realmente contém os dados. Os links simbólicos podem apontar para outros sistemas de arquivos, tanto locais quanto remotos, e podem também apontar para diretórios. Para criar um link simbólico, utiliza – se ln com a opção -s:

lsl2

Um link é indicado pela letra l no início das permissões que, nesse caso, são sempre lrwxrwxrwx. O tamanho do arquivo de link é exatamente a quantidade de bytes (caracteres) do caminho ao alvo. A seta ao lado do nome do link simbólico indica o caminho até o alvo.