Почему вывод

du -sch ./

не идентичен

du -sch ./*

Например, я запустил du -sch в домашнем каталоге моего пользователя и получил 51 ГБ, но при запуске du -sch * в том же каталоге получилось 47 ГБ. Сначала я подумал, что, может быть, это объясняет скрытые файлы, но это не объясняет почти 4 ГБ скрытых файлов / папок.

Я прочитал руководство по использованию дисковой утилиты, но не смог найти объяснения.

1 ответ1

1

Сначала я подумал, что, может быть, это объясняет скрытые файлы, но это не объясняет почти 4 ГБ скрытых файлов / папок.

Как вы это измерили? Я думаю , что у вас есть 4 ГБ скрытых файлов / директорий, или , может быть , даже больше (в некотором смысле) , если существует жестких ссылок , участвующих.

Это скажет вам (я опустил -h чтобы получить более точные результаты; tail должен передать только "total"; протестировано в bash):

du -sc ./.[^.]*    | tail -n 1   # hidden
du -sc ./*         | tail -n 1   # non-hidden
du -sc ./{.[^.],}* | tail -n 1   # hidden and non-hidden by wildcards
du -sc ./          | tail -n 1   # directory as a whole

(синтаксис взят из этого ответа).

Первая команда - это то, что вам не хватает. Получить сумму первого и второго результата; это будет равно двум последним результатам, если только ...

Если нет скрытых файлов между скрытой и не скрытой частью. Если да, то сумма будет еще больше , потому что эти файлы будут посчитаны дважды , когда вы просуммировать вручную, но только один раз , когда du суммирует их для вас в один проход. В этом случае скрытые файлы / каталоги занимают даже больше места, чем вы думаете (хотя часть этого пространства "разделяется" с не скрытой частью). Обратите внимание, что есть опция -l du которая управляет этим поведением:

-l , --count-links
считать размеры много раз, если жестко связаны

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