Почему вывод
du -sch ./
не идентичен
du -sch ./*
Например, я запустил du -sch
в домашнем каталоге пользователя и получил 51 ГБ, но запуск du -sch *
в том же каталоге дает 47 ГБ. Сначала я подумал, что, возможно, это учет скрытых файлов, но это не объясняет почти 4 ГБ скрытых файлов/папок.
Я прочитал руководство по дисковой утилите, но не смог найти объяснения.
решение1
Сначала я подумал, что, возможно, это связано со скрытыми файлами, но это не объясняет почти 4 ГБ скрытых файлов/папок.
Как вы это измерили? Я думаю, выделатьиметь 4 ГБ скрытых файлов/каталогов, или, может быть, даже больше (в некотором смысле), если задействованы жесткие ссылки.
Это скажет вам (я отказался, -h
чтобы получить более точные результаты; tail
нужно передать только «итого»; проверено в 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
подсчитывайте размеры много раз, если есть жесткая связь