Os arquivos no disco têm dois tamanhos: o "tamanho aparente" e o "tamanho no disco". Vários motivos podem causar uma discrepância grande :
- Um grande número de arquivos resultará em uma grande quantidade de sobrecarga, devido à fragmentação interna. Por exemplo. O Ext4 tem um tamanho de bloco padrão 4KiB; arquivos menores que isso consumirão sempre 4KiB, e os tamanhos acima serão "arredondados" para este alinhamento de blocos.
- Os diretórios também são arquivos e a mesma regra se aplica também a eles. Além disso, se você criar uma grande quantidade de arquivos em um diretório e removê-los novamente mais tarde, o uso no arquivo de diretório não poderá ser recuperado (recriar o diretório ajuda).
- Arquivos esparsos são arquivos especiais, que parecem grandes, mas não estão "consumindo" o espaço. Isso é comum na virtualização de imagens de discos virtuais; eles aparecerão grandes, mas o tamanho "real" pode ser muito menor. Muitos utilitários (e gerenciadores de arquivos) são incapazes de mostrar o uso real do disco.
- O uso de links físicos. O conteúdo de um arquivo pode existir no disco enquanto várias referências estão apontando para ele. Alguns gerenciadores de arquivos podem contabilizar o tamanho para cada referência.
Sugiro usar uma ferramenta de uso de disco capaz de listar os dois tamanhos para ver se esse é o problema. Tente ncdu
em um terminal e use a para alternar entre o uso real e do disco.
Uma breve demonstração sobre fragmentação interna devido a um sistema de arquivos de tamanho de bloco 4KiB usando du
:
$ sudo tune2fs -l /dev/path-to-device | grep "Block size"
Block size: 4096
$ echo blaataaap > myfile # creates a 10-byte file
$ du --block-size=1 myfile # prints the usage on disk (filesystem)
4096 myfile
$ du --apparent-size --block-size=1 myfile # prints the apparent size, i.e.
10 myfile # content length when seeking
$ ls -al
-rw-rw-r-- 1 gert gert 10 Jan 1 23:24 myfile # ls uses apparent sizes
Isso significa que este arquivo de 10 bytes é 4086 bytes maior no disco do que seria exibido em uma listagem e está sofrendo de fragmentação interna.
Uma breve demonstração sobre links físicos e uso de disco mostrados incorretamente ao listar arquivos ( ls
neste caso):
$ dd if=/dev/zero of=1MBfile bs=1M count=1 # create a 1MB file
$ ln 1MBfile a_hard_link # create a hard link to it
$ ls -alht # ls will report 2MB
total 2.1M
drwxrwxr-x 2 gert gert 4.0K Jan 2 11:21 .
-rw-rw-r-- 2 gert gert 1.0M Jan 2 11:21 1MBfile
-rw-rw-r-- 2 gert gert 1.0M Jan 2 11:21 a_hard_link
$ du -B 1024 . # du reports 1028K total for directory
1028 .
$ du -B 1024 a_hard_link # and 1024K for each file individually
1024 a_hard_link
$ du -B 1024 1MBfile
1024 1MBfile