Существует ли способ вычислить размер всех файлов, которыми не управляет диспетчер пакетов? Например, весь материал, который находится в /opt
, /var/
, /usr/local
, и т.д.
Я хотел бы узнать, сколько дискового пространства используется установленными пакетами, и сравните это с дисковым пространством, которое используется неуправляемыми файлами.
Обновление: Мой вопрос отличается от того, Что занимает так много места на моем диске около файловой системы?
Я знаю это на apt/dpkg
основанные дистрибутивы как Debian и Ubuntu, которую диспетчер пакетов, например, dpkg отслеживает все файлы, которые установлены с ним. Мы можем использовать инструменты как dpkg-query
получить информацию abotu эти пакеты.
Например, я пытался получить размер всех установленных пакетов с этой командой:
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
, это не различает установленные файлы диспетчера пакетов и любой другой файл.
Нет никакого надежного способа сделать так, так как пакеты могут загрузить файлы при установке этого 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
.