Ситуация, когда на сервере заканчивается место, знакома каждому системному администратору. Вы вводите df -h, видите заполненный раздел, а затем начинаете бесконечный квест с du -sh *, пытаясь найти, какая именно директория «съела» всё свободное пространство. Если вложенность каталогов велика, этот процесс может отнять массу времени. К счастью, есть более эффективный инструмент — ncdu.

Что такое ncdu?

ncdu (NCurses Disk Usage) — это интерактивная утилита для анализа дискового пространства в терминале. В отличие от стандартных команд, она сканирует файловую систему и визуализирует данные в удобном списке, отсортированном по размеру. Вы можете перемещаться по дереву каталогов, быстро находить «тяжелые» файлы и удалять их прямо из интерфейса программы.

Установка ncdu

# Ubuntu/Debian
sudo apt install ncdu

# CentOS/RHEL/Fedora
sudo dnf install ncdu

# Arch Linux
sudo pacman -S ncdu

# macOS
brew install ncdu

# Из исходников (если совсем древняя система)
wget https://dev.yorhel.nl/download/ncdu-2.6.tar.gz
tar -xzf ncdu-*.tar.gz
cd ncdu-*
./configure && make && sudo make install

Базовое использование

# Просканировать текущую папку
ncdu

# Просканировать конкретную папку (например, /var)
ncdu /var

# Просканировать всю систему (только с sudo)
sudo ncdu /

Навигация и управление

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

  • Стрелки (вверх/вниз) — навигация по списку.
  • Enter — вход в выбранную директорию.
  • ] — возврат на уровень выше.
  • d — удаление выбранного элемента (с подтверждением).
  • n — сортировка по имени.
  • s — сортировка по размеру.
  • q — выход из программы.

Киллер-фичи

Утилита предлагает несколько продвинутых возможностей для профессионалов:

  1. Удаленное сканирование: Вы можете просканировать сервер и передать данные на локальную машину для анализа, не перегружая удаленный хост:
    ssh user@server ncdu -o- / | ncdu -f-
  2. Экспорт результатов: Результаты сканирования можно сохранить в JSON для последующего анализа или отчетов:
    ncdu -o scan.json /
  3. Исключение системных путей: Чтобы не тратить время на сканирование виртуальных файловых систем, используйте флаг:
    ncdu --exclude-kernfs /

Если вы хотите узнать больше о том, как поддерживать порядок на сервере, рекомендуем ознакомиться с нашей статьей про мониторинг состояния Linux-систем.