Когда свободное место на диске заканчивается, df -h показывает только раздел, а du выдаёт простыню из сотен строк, в которой легко потеряться. Для быстрой диагностики удобнее два инструмента: ncdu с интерактивным браузером каталогов и dust с наглядным деревом и цветными полосами. Оба работают в терминале, не требуют графической сессии и одинаково полезны на домашнем компьютере и на сервере по SSH. Ниже — установка, повседневные сценарии, экспорт снимка файловой системы и осторожная уборка без риска удалить нужное.

Чем ncdu и dust отличаются от du

du рекурсивно обходит дерево и печатает размер каждого каталога. Формат неудобен: чтобы найти виновника, приходится вручную сужать путь и снова запускать команду. ncdu сразу строит интерактивную модель дерева, позволяет переключаться между каталогами стрелками и показывает долю каждого элемента. dust решает другую задачу: выводит отсортированный список крупнейших каталогов с процентными полосами, без полноэкранного интерфейса.

Оба считают занятые блоки, а не только длину файлов. Это важно: миллион мелких файлов может занимать гигабайты из-за размера блока, хотя суммарный размер по ls будет скромным. Ключ --apparent-size (у dust — -s) переключает расчёт на логический размер, если нужно понять структуру, а не физическое потребление.

Установка

ncdu входит в репозитории большинства дистрибутивов. dust в Debian и Ubuntu называется du-dust, в Fedora и Arch — dust; сборка из исходников через cargo тоже работает, но требует Rust.

sudo apt install ncdu du-dust
sudo dnf install ncdu dust
cargo install du-dust
ncdu --version; dust --version

На сервере без компилятора и лишних пакетов достаточно ncdu: минимум зависимостей, скромные требования и предсказуемое поведение. dust удобнее для разового обзора, когда не хочется входить в полноэкранный режим.

ncdu: навигация и удаление

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

ncdu ~
sudo ncdu -x /
sudo ncdu -x --exclude='/proc' --exclude='/sys' /
ncdu -x -o /var/tmp/root-scan.json /

Ключ -x не переходит через точки монтирования, поэтому в скан не попадут сетевые ресурсы и чужие разделы. Для домашних каталогов полезен --exclude-caches: он не считает содержимое каталогов с меткой CACHEDIR.TAG, которые приложения объявили кэшем. Внутри интерфейса стрелки перемещают курсор, Enter открывает каталог, ? показывает справку. Клавиша d удаляет выбранный элемент после подтверждения, g рисует график, s сортирует по размеру, n — по имени, M — по времени изменения в режиме -e. В верхней строке виден текущий путь, а внизу — общий объём и число элементов.

Не удаляйте каталоги наугад. Сначала нажмите i и посмотрите владельца, права и время: часто «мусор» оказывается базой пакета, кэшем сборки или каталогом контейнера. Если файл открыт процессом, место не освободится до перезапуска службы. Проверить это можно через lsof.

Снимок и разбор с другого компьютера

Экспорт полезен на продакшене: тяжёлое сканирование выполняется один раз, а изучать результат можно локально, не нагружая сервер повторными проходами. Формат JSON, поэтому снимок открывается только совместимой версией ncdu; после крупного обновления проверьте чтение на тестовом файле.

ssh admin@server 'sudo ncdu -0 -o - -x /' > server-scan.json
ncdu -f server-scan.json
ncdu -o- /home | ncdu -f-
du -xhd1 /var | sort -h | tail -20

При импорте ncdu отключает обновление, удаление и запуск оболочки: снимок может не совпадать с текущим состоянием диска. Это защита от ошибок, а не ограничение. Для регулярного аудита удобно хранить сжатые снимки и сравнивать их между собой; ключ -c включает сжатие Zstandard, но совместимость с конкретной сборкой стоит проверить заранее.

dust: дерево за одну команду

dust не требует полноэкранного режима и хорошо подходит для быстрых проверок. Глубину и число строк можно ограничить, чтобы вывод оставался читаемым даже в узком терминале.

dust -d 2 -n 20 /var
dust -r -n 15 ~/Downloads
dust -s -d 1 /home
dust -i -x -d 3 /

Ключ -d задаёт глубину, -n — количество строк, -r переворачивает список, чтобы крупнейшие элементы оказались вверху, -s считает логический размер, -i скрывает скрытые файлы, -x не выходит за пределы файловой системы. Ключ -D показывает только каталоги, -F — только файлы, -z отсекает элементы меньше заданного размера, например -z 500M. Для поиска самых больших файлов удобно сочетание -F и -n.

Цветные полосы показывают вклад элемента в общий объём. Если терминал не поддерживает цвет, добавьте -c; для скриптов и журналов лучше -b, который убирает проценты и псевдографику. Вывод dust не является точной бухгалтерией: жёсткие ссылки могут учитываться иначе, чем в du, поэтому для строгих отчётов используйте du или ncdu.

Что ещё занимает место

Большие каталоги — не единственная причина переполнения. Журналы systemd, кэш пакетов, образы контейнеров и удалённые, но открытые файлы часто остаются незамеченными.

journalctl --disk-usage
sudo journalctl --vacuum-size=500M
docker system df
sudo lsof +L1 | head -20
df -i /
  • journalctl --vacuum-size уменьшает журнал до заданного размера, не удаляя активные записи;
  • docker system df показывает образы, контейнеры и тома, но очистку нужно планировать отдельно;
  • lsof +L1 находит файлы, удалённые с диска, но всё ещё открытые процессом;
  • df -i выявляет исчерпание inode, когда свободное место ещё есть.

Чек-лист перед удалением

  • Проверьте, какому пакету принадлежит файл: dpkg -S путь или rpm -qf путь.
  • Убедитесь, что каталог не является точкой монтирования и не входит в резервную копию.
  • Посмотрите открытые файлы через lsof и активные службы через systemctl.
  • Для журналов используйте vacuum или logrotate, а не удаление открытого файла.
  • Сначала освободите место на тестовой машине и только потом повторяйте на сервере.

Итог

ncdu лучше подходит для вдумчивого разбора и удаления внутри дерева, dust — для быстрого обзора и поиска крупнейших каталогов одной командой. Связка df, ncdu, dust и проверка открытых файлов закрывает большинство случаев переполнения диска. Главное правило: сначала выясните, что занимает место и кому принадлежит, и только затем удаляйте. Экспорт снимка позволяет безопасно анализировать сервер с локальной машины и возвращаться к результатам позже.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте