Em que circunstâncias ls -lh
mostraria um total menor que a soma dos arquivos individuais? Por exemplo:
$ ls -lh /var/lib/nova/instances/_base
total 100G
-rw-rw-r-- 1 nova nova 4.3M 2012-02-14 14:07 00000001
-rw-rw-r-- 1 nova nova 5.7M 2012-02-14 14:07 00000002
-rw-rw-r-- 1 nova nova 42G 2012-03-08 15:24 1574bddb75c78a6fd2251d61e2993b5146201319.part
-rw-rw-r-- 1 libvirt-qemu kvm 24M 2012-02-14 14:07 77de68daecd823babbb58edb1c8e14d7106e83bb_sm
-rw-r--r-- 1 libvirt-qemu kvm 65G 2012-03-02 12:43 bd307a3ec329e10a2cff8fb87480823da114f8f4
-rw-rw-r-- 1 libvirt-qemu kvm 160G 2012-02-24 16:06 ephemeral_0_160_None
-rw-rw-r-- 1 libvirt-qemu kvm 80G 2012-02-24 22:38 ephemeral_0_80_None
-rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 22:37 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
-rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 11:09 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f_sm
Edit: agora mostrando alguns sinalizadores extras são por solicitação no comentário:
$ ls -aiFlh /var/lib/nova/instances/_base/
total 143G
29884440 drwxrwxr-x 2 nova nova 4.0K 2012-03-08 15:45 ./
29884427 drwxr-xr-x 6 nova nova 4.0K 2012-03-08 15:05 ../
29884444 -rw-rw-r-- 1 nova nova 4.3M 2012-02-14 14:07 00000001
29884445 -rw-rw-r-- 1 nova nova 5.7M 2012-02-14 14:07 00000002
29884468 -rw-r--r-- 1 nova nova 65G 2012-03-08 15:59 1574bddb75c78a6fd2251d61e2993b5146201319.converted
29884466 -rw-rw-r-- 1 nova nova 58G 2012-03-08 15:35 1574bddb75c78a6fd2251d61e2993b5146201319.part
29884446 -rw-rw-r-- 1 libvirt-qemu kvm 24M 2012-02-14 14:07 77de68daecd823babbb58edb1c8e14d7106e83bb_sm
29884467 -rw-r--r-- 1 libvirt-qemu kvm 65G 2012-03-02 12:43 bd307a3ec329e10a2cff8fb87480823da114f8f4
29884443 -rw-rw-r-- 1 libvirt-qemu kvm 160G 2012-02-24 16:06 ephemeral_0_160_None
29884442 -rw-rw-r-- 1 libvirt-qemu kvm 80G 2012-02-24 22:38 ephemeral_0_80_None
29884447 -rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 22:37 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
29884441 -rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 11:09 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f_sm
files
ls
disk-usage
Lorin Hochstein
fonte
fonte
ls -aiFl
hdu -h --total
para o mesmo diretório?Respostas:
Isso acontecerá se você tiver arquivos esparsos:
Um arquivo esparso é um arquivo que não foi preenchido com blocos do sistema de arquivos (ou apenas parcialmente). Quando você lê uma zona não preenchida de um arquivo esparso, obtém zeros. Essas zonas em branco não requerem espaço em disco real, e o 'total' relatado por
ls
corresponde ao espaço em disco ocupado pelos arquivos (exatamente comodu
).fonte
-s
/--size
"Imprime a alocação de disco de cada arquivo à esquerda do nome do arquivo. Essa é a quantidade de espaço em disco usada pelo arquivo, que geralmente é um pouco mais do que o tamanho do arquivo, mas pode será menor se o arquivo tiver falhas . " A-l
opção, é claro, também imprime o tamanho.Observe que a saída fornecida por
ls -l
edu
tem uma diferença sutil, mas muito importante. Tente o seguinte:Agora
Enquanto que
Isso ocorre porque o sistema de arquivos aloca tamanho em pedaços de 4096 (na minha caixa linux). É chamado de bloco IO. Você pode ver isso por:
fonte
stat
eu propusempty-file
e verá que o número de blocos é 0, mesmo que o arquivo tenha um tamanho de 1G.stat
relata o número equivalente de blocos antigos necessários para armazenar todos os blocos de 4K (ou seja, 8 vezes o número real de blocos de 4K).A resposta aceita está absolutamente correta, apenas se você quiser ver o tamanho aparente, pode usar:
du --apparent-size
fonte