Por que o Nautilus mostra um arquivo e seu link físico como maior que apenas o arquivo?

2

Quando eu crio um link físico em um arquivo de 2 KB (chamado fun ), o Nautilus mostra esse link físico (chamado fun-hard ) como um arquivo com o mesmo tamanho. Esses dois arquivos estão apontando para o mesmo inode , portanto, suas propriedades combinadas devem exibir apenas 2 KB. Mas o Nautilus diz que seu tamanho total é de 4 KB. Por quê?

    
por hunch 06.08.2014 / 07:17

1 resposta

5

É claro que, se você criar um link físico para um arquivo, tanto o arquivo original quanto o link físico apontarão para o mesmo inode. De fato, ambos são equivalentes - para o sistema não existe algo como "o original" e "o link". Eles são simplesmente dois pontos de acesso ao mesmo inode. Conseqüentemente, eles não ocupam mais espaço juntos do que se você tivesse apenas um ponto de acesso (exceto pelo menor número de informações no sistema de arquivos, em que dois ponteiros para algum inode são armazenados em vez de apenas um).

Você pode confirmar isso facilmente quando usar um utilitário de sistema de arquivos de baixo nível, como, por exemplo, du . Por exemplo, aqui eu tenho um diretório com uma única música ( FOSS Yeaaaah! , uma música incrível sobre o Ubuntu de Ben Kerensa) de aproximadamente 2.1 MB:

$ ls -li 
total 2124
6424897 -rw-rw-r-- 1 malte malte 2162937 Aug  7 12:53 FOSS Yeaaaah!.mp3
$ du -ch * # display size of all files, and total size
2.1M    FOSS Yeaaaah!.mp3
2.1M    total
$ du -h . # display size of current directory
2.1M    .

Quando eu crio um link físico, digamos Link.mp3 , para o arquivo, du realmente reconhece que os dois nomes de arquivos apontam para o mesmo arquivo e só exibe um dos dois:

$ ln FOSS\ Yeaaaah\!.mp3 Link.mp3
$ ls -li
total 4248
6424897 -rw-rw-r-- 2 malte malte 2162937 Aug  7 12:53 FOSS Yeaaaah!.mp3
6424897 -rw-rw-r-- 2 malte malte 2162937 Aug  7 12:53 Link.mp3
$ du -ch *
2.1M    FOSS Yeaaaah!.mp3
2.1M    total
$ du -h .
2.1M    .

(Ele está exibindo apenas o que vem primeiro em ordem alfabética - eu havia chamado o hardlink A.mp3 , então du teria exibido esse link).

O comportamento que você está enfrentando é provavelmente um erro ou imprecisão em qualquer software que você esteja usando para exibir os tamanhos dos arquivos. Se é Nautilus (o navegador de arquivos padrão em uma instalação típica do Ubuntu), então eu posso confirmar esse comportamento. Veja este relatório de bug:

link

Pode ser apenas "um recurso, não um bug" - como o Nautilus está tentando manter as coisas simples para o usuário médio, ele simplesmente ignora os hard links. Que nem sempre pode ser a melhor ideia. Citando o relatório do bug:

  

O Nautilus tenta manter as coisas simples. É por isso que não oferece uma maneira de criar hardlinks. Mas se as coisas já estão complicadas - se os hardlinks já estão presentes - simplesmente ignorá-los pode levar a problemas próprios.

Em resumo, se você estiver trabalhando com links físicos, confie melhor em um terminal em vez de em algum aplicativo de navegação de arquivos.

    
por Malte Skoruppa 07.08.2014 / 13:07