дю резюме не равно сумме элементов - PullRequest
0 голосов
/ 29 мая 2019

Каталог содержит обычные файлы в обычных каталогах, без символических ссылок и удаленных файловых файлов (на самом деле это хранилище maildir ++, поэтому даже редких файлов не ожидается). Я не очень понимаю, как это возможно, что сводная информация о размерах каталогов значительно больше, чем общая сумма du:

$ du * .[a-zA-Z]* -bsc | tail -n1
2722800257      total

$ du * .[a-zA-Z]* -b | awk '{sum+=$1} END {print sum}'
3341577554

Реальность, кажется, соответствует большему числу.

1 Ответ

0 голосов
/ 30 мая 2019

Ваша вторая команда du -b ... | awk ... преувеличивает общее количество, потому что она подсчитывает размеры подкаталогов несколько раз. Размер каждого подкаталога учитывается сам по себе, а затем снова считается частью размера каждого из его каталогов-предков.

Проще увидеть, что происходит в небольшом примере, подобном этому, в файловой системе, где пустой каталог потребляет 4 КБ:

$ mkdir -p foo/bar/baz

$ du -bsc foo
12288   foo
12288   total

$ du -b foo
4096    foo/bar/baz
8192    foo/bar
12288   foo

$ du -b foo | awk '{t += $1} END {print t}'
24576
...