dua — анализатор занятого места, который сканирует каталоги параллельно и показывает результат в интерактивном терминальном интерфейсе. Его часто ставят на замену ncdu: тот удобен, но обходит дерево в один поток и на миллионах файлов заметно уступает. В 2026 году dua умеет не только строить дерево, но и находить мусорные каталоги, сравнивать снимки и удалять помеченное. Ниже — установка, разбор результатов и безопасная очистка.

Установка и проверка

В Debian, Ubuntu и Linux Mint пакет называется dua-cli. В Fedora, Arch и Void пакет называется так же. Если версия в репозитории старая, свежую можно собрать через Cargo.

sudo apt install dua-cli
dua --version
dua --help
cargo install dua-cli

Сборка из исходников требует Rust и занимает несколько минут. Пакетная версия обычно собрана с TUI; если интерфейс не запускается, проверьте, что это не урезанная сборка. Запускать dua лучше в настоящем терминале: при перенаправлении вывода интерактивные клавиши не работают.

Быстрый старт без интерфейса

Без аргументов dua сканирует текущий каталог и открывает интерактивный режим. Для отчёта в скрипте или в переписке используйте подкоманду aggregate: она печатает таблицу и завершается, ничего не удаляя.

dua aggregate
dua aggregate ~/Downloads /var/log
dua aggregate --depth 2 -f binary ~

В 3.x параметр --depth 2 показывает дерево на два уровня вместо плоского списка, -f binary переключает единицы на ГиБ.

Как читать цифры

dua по умолчанию считает занятое место на диске, а не логический размер файла. Это важно для разреженных файлов, образов виртуальных машин и сжатых ФС: du и dua могут показать меньше, чем ls -l. Флаг -A включает apparent size, то есть сумму длин файлов.

  • -A — логический размер вместо занятых блоков.
  • -l — считать каждую жёсткую ссылку отдельно; по умолчанию дубликаты учитываются один раз.
  • -x — не переходить на другие файловые системы и точки монтирования.
  • -i — исключить каталог по абсолютному пути, например -i /home/user/.cache.
  • -t 4 — ограничить число потоков, если диск и без того перегружен.

На Linux dua по умолчанию пропускает /proc, /dev, /sys и /run. Это защита от бессмысленного обхода псевдофайловых систем, но при анализе корня её нужно учитывать.

Интерактивный режим

Запуск dua i открывает дерево, где можно ходить по каталогам и помечать элементы. В версии 3.x раскладка такая: ? — помощь, j/k — движение, l или Enter — войти в каталог, h — вернуться, s — сортировка по размеру, c — по количеству файлов, n — по имени.

dua i ~/Downloads
dua i --apparent-size ~/Downloads
dua interactive --export scan-before.dua ~/
dua i --export scan-after.dua ~/
dua diff scan-before.dua scan-after.dua --depth 2

Пробел помечает элемент, d помечает и переходит к следующему. Ctrl+R удаляет помеченное безвозвратно, Ctrl+T отправляет в корзину. В старых версиях 2.x раскладка отличается, поэтому первым делом откройте ? и прочитайте подсказку именно для своей сборки. Экспорт снимка и dua diff доступны в 3.x и помогают понять, что выросло за неделю.

Безопасное удаление

Главное правило: сначала смотрите, потом удаляете. Начните с домашнего каталога, а не с корня. Если элемент помечен, проверьте, что это кэш, а не данные приложения.

dua aggregate -A ~/.cache
dua clean --depth 0 ~/dev
dua clean ~/dev ~/projects
dua aggregate -A ~/.local/share/Trash

В 3.x dua clean ищет каталоги, которые обычно можно пересоздать: node_modules, target, виртуальные окружения Python, кэши Cargo и Zig. Это не автоматическое удаление: сначала показывается список, затем вы отмечаете кандидатов. В git-репозиториях кандидат должен быть проигнорирован и не содержать отслеживаемых файлов, но привычку проверять git status это не отменяет.

Корзина — не бесконечное хранилище. Если файлы уже отправлены туда, dua покажет её размер; очищать корзину лучше через файловый менеджер, а не удалять содержимое вручную.

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

Кэш пакетов, журналы systemd и неиспользуемые Flatpak-рантаймы часто больше, чем кажется. Перед очисткой посмотрите размеры, затем применяйте штатные команды, а не удаление файлов наугад.

dua aggregate /var/cache/apt/archives
sudo apt clean
journalctl --disk-usage
sudo journalctl --vacuum-size=300M
flatpak uninstall --unused

apt clean удаляет только скачанные deb-пакеты, установленные программы остаются. journalctl --vacuum-size сокращает журнал до указанного размера, но не трогает логи приложений в /var/log. Для Docker сначала смотрите docker system df, и только потом решайте, что удалять: docker system prune может снести нужные образы и остановленные контейнеры.

Если df и dua расходятся

Файл может быть удалён, но оставаться открытым процессом — тогда место не освобождается, а dua его уже не видит. Проверить такие файлы можно через lsof; после перезапуска процесса место вернётся.

df -h /
sudo lsof +L1 | head -n 20
sudo lsof +L1 | awk '{sum += $7} END {print sum/1024/1024 " MB"}'
mount | grep ' / '

Вторая причина — разные файловые системы: dua без -x может пройти в смонтированный раздел, а df для корня его не учитывает. Третья — зарезервированные блоки ext4, обычно 5 процентов: для пользователя они недоступны, хотя формально заняты. Учитывайте это, прежде чем искать «пропавшие» гигабайты.

Ограничения

dua не следует по символическим ссылкам: сами ссылки видны, но их содержимое не обходится. Интерактивный режим рассчитан на тёмный терминал, а на миллион записей требует около 60 МБ памяти. Для сетевых ФС и медленных USB-дисков параллельный обход иногда медленнее последовательного: помогает -t 1 или --no-entry-check в dua clean.

Чек-лист

  • Начинайте с домашнего каталога.
  • Сравните dua aggregate и df -h до удаления.
  • Убедитесь, что каталог можно пересоздать.
  • Используйте корзину, а не Ctrl+R, пока не уверены.
  • Для регулярного контроля сохраняйте снимки и смотрите dua diff.

Итог

dua закрывает ту же задачу, что ncdu, но быстрее и с более удобным разбором больших деревьев. Начните с dua aggregate --depth 2, затем откройте dua i для точечной проверки, а удаление делайте через корзину. В связке с df, lsof и штатными командами очистки кэшей инструмент помогает найти место там, где графический анализатор показывает только общую диаграмму.

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

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

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

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

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