Несоответствующий вывод команды `du`

292
Aren Tahmasian

Почему вывод

du -sch ./ 

не идентичен

du -sch ./* 

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

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

0

1 ответ на вопрос

1
Kamil Maciorowski

Сначала я подумал, что, может быть, это объясняет скрытые файлы, но это не объясняет почти 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
Подсчет размеров много раз, если жесткая ссылка

Эй, Камил, ты абсолютно прав, была куча жестких ссылок, которые я не учел. Спасибо за помощь и спасибо за информацию о !! Я обязательно добавлю это в мои заметки:] Aren Tahmasian 6 лет назад 0

Похожие вопросы