В моей системе Ubuntu, используя ext4, du -b file
дает размер в байтах фактического файла и du -b dir
дает размер в байтах файла (ов) + служебные данные каталога. В моем случае накладные расходы кратны 4096 байтам.
Эти издержки увеличиваются с увеличением количества файлов.
Примечание: даже если файлы удалены, издержки каталога остаются на более высоком уровне, чем до удаления файлов.
Я не пробовал перезагружаться, чтобы посмотреть, не восстановится ли он, но в любом случае это означает, что размер каталога меняется в зависимости от исторических обстоятельств.
Подсчет каждого размера файла может быть лучшим вариантом для точного значения общих размеров файлов .
Следующий скрипт суммирует все размеры файлов (в байтах).
Для OS X, если у вас нет -b
опции «du», вы можете использовать stat
вместо этого (если у вас есть :) ... Строка с комментариями показывает stat
альтернативу Ubuntu du -b
;
unset total
while IFS= read -r -d $'\0' rf; do
# (( total += $(stat "$rf" | sed -nre 's/^ Size: ([0-9]+).*/\1/p') ))
(( total += $(du -b "$rf" | cut -f 1) ))
done < <(find . -type f -name '*' -print0)
echo $total