5

Я недавно столкнулся с этой проблемой:

find /tmp/tmp33hn25wv -type f -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'
10420224

du -bs /tmp/tmp33hn25wv
12198004    /tmp/tmp33hn25wv

Результаты постоянно отличаются. Все файлы записаны в виде нескольких байтов размера блока.

Где дю находит эти дополнительные байты? Я понимаю, что файловой системе может потребоваться больше или меньше места для хранения содержимого файлов, но я надеялся, что опция -b для du означает, что она должна учитывать "кажущийся" размер, а не размер, используемый файловой системой. ,

1 ответ1

3

du включает размер каталогов. Если вы добавите -type d к критериям find вы можете получить желаемый результат (я делаю это в дереве каталогов, содержащем только стандартные файлы):

find /tmp/tmp33hn25wv \( -type f -o -type d \) -exec stat --format='%s' {} + |\
    awk '{s+=$1} END {print s}'

Однако могут быть другие типы файлов, которые занимают место, поэтому попробуйте вообще не проверять тип:

find /tmp/tmp33hn25wv -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .