Вычислить размер управляемых и неуправляемых файлов в Ubuntu

3

Есть ли способ вычислить размер всех файлов, которые не управляются менеджером пакетов? Например , все вещи , которые в /opt, /var/, /usr/localи т.д.

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

Обновление: мой вопрос отличается от того, что занимает так много места на моем диске, помимо файловой системы?

Я знаю, что на apt/dpkgоснове дистрибутивов, таких как Debian и Ubuntu, менеджер пакетов, например, dpkg отслеживает все файлы, которые установлены с ним. Мы можем использовать такие инструменты, как dpkg-queryполучение информации об этих пакетах.

Например, я попытался получить размер всех установленных пакетов с помощью этой команды:

dpkg-query -W --showformat='${Installed-Size}\n' | \
    sort -k1,1n |awk '{s+=$1} END {print s}'

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

По сути, я ищу некоторые инструменты, которые могут различать файлы, установленные менеджером пакетов, и все остальные файлы, которые находятся в корневой файловой системе, но не управляются менеджером пакетов.

Когда мой диск начинает заполняться, я хотел бы знать, если я:

a) Установлено слишком много пакетов или b) В файловой системе слишком много других файлов, которые занимают место.

Поэтому я хотел бы получить что-то вроде следующей информации о моей корневой файловой системе:

56GB of 60GB are used on '/':

  * 32GB are used by installed packages
  * 24GB are used by other files

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

lanoxx
источник
1
du -sh /opt /var /usr/localпокажет вам размер каждого интересующего вас каталога
13dimitar

Ответы:

0

Не существует надежного способа сделать это, поскольку пакеты могут при загрузке загружать файлы, о dpkgкоторых никто не узнает. Пакет будет очищен при удалении, поэтому он в некотором смысле управляется, но dpkgне отслеживает их. И хотя он dpkgзнает размеры из пакета, файлы, конечно, могли измениться после установки.

В пакетах могут быть файлы /opt(например, Google Chrome) /var/(слишком много примеров, чтобы перечислить, просто сделайте dpkg -S /var), /usr/local(сертификаты SSL должны быть установлены с использованием каталога в/usr/local одном примере).

Достоверно, только каталоги , которые вы можете исключить это /home, /cdrom, /mnt, /media/lost+found, но это артефакт файловой системы, а не стандарт).

Для меня команда, которую вы пробовали, и следующая команда находятся в разумном согласии и значительно отличаются от фактического использования файловой системы (список файлов из пакета находится в /var/lib/dpkg/info/<package>.list):

$ (cat /var/lib/dpkg/info/*.list | sudo xargs -d '\n' stat -c '%s' | awk '{c+=$1}END{print int(c/1024)}') 2>/dev/null
5572166

Для сравнения:

$ dpkg-query -W --showformat='${Installed-Size}\n' | awk '{c+=$1}END{print c}'
5462957
$ df /
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18446076 6744528  10741500  39% /

Лично я просто проверяю размеры /var/cacheи /home.

Мур
источник