При каких обстоятельствах будет ls -lh
показана сумма, которая меньше суммы отдельных файлов? Например:
$ 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
Изменить: теперь показаны некоторые дополнительные флаги для каждого запроса в комментарии:
$ 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
Лорин Хохштайн
источник
источник
ls -aiFl
hdu -h --total
же режиссера?Ответы:
Это произойдет, если у вас есть разреженные файлы:
Разреженный файл - это файл, который не был заполнен блоками файловой системы (или только частично). Когда вы читаете незаполненную зону разреженного файла, вы получите нули. Такие пустые зоны не требуют фактического дискового пространства, и «общее», о котором сообщается,
ls
соответствует дисковому пространству, занимаемому файлами (точно так же какdu
).источник
-s
/--size
«Вывести информацию о выделении диска каждому файлу слева от имени файла. Это объем дискового пространства, используемого файлом, который обычно немного больше размера файла, но может будет меньше, если в файле есть дыры . "-l
Вариант конечно печатает размер тоже.Обратите внимание, что выходные данные даны
ls -l
иdu
имеют тонкое, но очень важное отличие. Попробуй это:Сейчас
В то время как
Это связано с тем, что файловая система выделяет размер порциями 4096 (на моем компьютере с Linux). Это называется IO Block. Вы можете увидеть это по:
источник
stat
предложенное мнойempty-file
, и вы увидите, что количество блоков равно 0, даже если размер файла равен 1G.stat
сообщает эквивалентное количество блоков старого размера, необходимых для хранения всех блоков 4K (это в 8 раз больше действительного числа блоков 4K).Принятый ответ является абсолютно правильным, просто если вы хотите увидеть видимый размер, вы можете использовать:
du --apparent-size
источник