анализировать использование диска без учета монтирования

67

Ubuntu жалуется, что моя корневая файловая система почти заполнена, но когда я использую baobab(также называемый «Disk Usage Analyzer») или du -hон суммирует использование всех других смонтированных файловых систем.

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

drevicko
источник

Ответы:

72

Баобаб: Если вы хотите использовать баобаб, это возможно, смонтировав корневую файловую систему в другом месте и проанализировав ее. Таким образом, другие файловые системы не будут смонтированы в новом корневом монтировании, а любые файлы, скрытые монтируемыми под ними, /будут обнаружены и учтены в вашем анализе.

Предполагая, что ваша корневая файловая система включена sda1( dfскажет вам, какое это устройство):

mkdir root-rebound
sudo mount /dev/sda1 root-rebound
baobab root-rebound

и затем приведите в порядок, когда вы закончите:

sudo umount root-rebound
rmdir root-rebound

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

У du есть две опции, которые могут предотвратить подсчет других файловых систем:

 -x, --one-file-system
         skip directories on different file systems
     --exclude=PATTERN
         exclude files that match PATTERN

Таким образом,

du -hx

будет игнорировать все другие подключенные файловые системы или

du -h --exclude /media

будет игнорировать все файлы, в /mediaкоторых смонтировано большинство файловых систем.

Если вы используете du, сортировка так, чтобы самые большие вещи появлялись внизу списка, могла помочь расшифровать вывод. например:

du -hx | sort -h
Cumulus007
источник
2
Круто, я не видел опцию -x. Я также нашел другой способ: вы можете снова смонтировать файловую систему где-нибудь, а затем использовать du или baobab для ее анализа. Кроме того, я нахожу это полезным du -hx | sort -h, хотя баобаб легче интерпретировать.
drevicko
@ Cumulos007 - если с тобой все в порядке, я добавлю свое решение и предложение к твоему ответу и приму его
drevicko
Это хорошо для меня!
Cumulus007
1
@ wim no, версия с графическим интерфейсом не может использовать опцию -x du. Хотя монтирование корневой файловой системы где-то еще работает - это то, что я делаю в эти дни (:
drevicko
1
du -kx | sort -nмой путь
Алехандро Тейшейра Муньос
6

В зависимости от типа файловой системы вам может быть запрещено монтировать корневую файловую систему в точке монтирования ниже /. Вы получите что-то похожее на это:

mount: /dev/sda1 already mounted or /mnt busy
mount: according to mtab, /dev/sda1 is mounted on /

Монтирование только для чтения ( -o ro) может помочь. Если это не удается, используйте привязку:

mount --bind / /mnt

После подключения используйте любой инструмент для анализа использования диска, т. Е. du -sh * | sort -h

Брэм
источник
3

В этом отчете об ошибках объясняется, как можно настроить baobab для игнорирования каталогов. К сожалению, вы не можете сделать это внутри самого приложения, но вы должны использовать dconf-editorи открывать org.gnome.baobab.preferences. Здесь вы найдете предмет excluded-uris; изменить это на ['file:///path/to/ignore'](работал с одинарные кавычки для меня).

Гейра
источник
Это на самом деле не отвечает на вопрос, но это полезная информация, и кто-то, ищущий такую ​​информацию, может оказаться здесь, так что я голосую (:
drevicko
Он отвечает на вопрос о том, как игнорировать монтирование в баобабе (исключая точки монтирования) без необходимости перемонтировать корневой раздел. На другую половину вопроса (du) уже ответили в принятом сообщении.
Гейра
2

Baobab пытается дать вам контроль над сканируемыми устройствами / разделами - перейдите на Edit->Preferences. Как правило, вы хотите сканировать устройство только в точке монтирования /. Тем не менее, он не распознает все типы ссылок / монтирований / привязок , поэтому в конечном итоге Baobab может привести к непонятным результатам, если у вас нетривиальная конфигурация.


Для du, следующая вызванная функция оболочки dutopотобразит верхний уровень указанной папки (или текущей папки). При этом вы можете проверять подпапки по одной за раз.

function dutop() { du --max-depth=1 --one-file-system -h $@ |sort -h; }

Скорее всего, это приведет к появлению несущественных ошибок «Отказано в доступе», если вы их примените /, но вы могли бы разрешить их с помощью чего-то вроде следующего, который запросит ваш пароль (если вы недавно его не предоставляли).

function sudutop() { sudo du --max-depth=1 --one-file-system -h $@ |sort -h; }

Для больших папок это может занять некоторое время. Они не будут сообщать никакого инкрементного статуса, потому что операция сортировки буферизует все промежуточные результаты. Это нормально, чтобы прервать с помощью Ctrl-C, если вы устали ждать.

nobar
источник