📊 ncdu: Когда место на диске исчезает, а вы не знаете куда

Знакомая ситуация: на сервере внезапно заканчивается свободное дисковое пространство. Первым делом вы запускаете команду df -h, чтобы убедиться, что корневой раздел действительно переполнен. Затем начинается утомительный процесс последовательного выполнения du -sh * в каждой директории, погружения всё глубже и глубже, пока не будет обнаружена причина избыточного потребления места. Этот метод может отнять часы, особенно если структура каталогов сложна и содержит тысячи папок.

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

🟢 Как установить ncdu

Установка ncdu осуществляется с помощью стандартных пакетных менеджеров для большинства Linux дистрибутивов и macOS.

# Ubuntu/Debian

sudo apt install ncdu

# CentOS/RHEL/Fedora

sudo dnf install ncdu

# Arch Linux

sudo pacman -S ncdu

# macOS

brew install ncdu

# Из исходников (для устаревших систем)

Если ваша операционная система не поддерживает установку из репозиториев, вы можете собрать 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

После установки вы можете сразу приступить к работе с ncdu.

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

ncdu

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

ncdu /var

# Просканировать всю систему (требуются права суперпользователя)

sudo ncdu /

🟢 Как работать внутри ncdu

После запуска ncdu вы увидите список папок и файлов, отсортированных по размеру в порядке убывания (самые крупные элементы расположены сверху). В левой части отображается размер, а в правой — процент от общего объёма сканируемой директории.

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

➕ Преимущества ncdu

  • Наглядность: Мгновенно показывает, какие файлы и директории занимают больше всего места, избавляя от ручного перебора команд.
  • Скорость: Работает исключительно быстро даже на больших дисковых разделах.
  • Безопасность: Функция удаления требует подтверждения, минимизируя риск случайного удаления важных данных.
  • Портативность: Эффективно работает в любой терминальной среде Linux, включая минимальные установки без графического интерфейса.

➖ Недостатки ncdu

  • Не предустановлен в большинстве дистрибутивов, что требует дополнительной установки.
  • Для сканирования системных папок, к которым у обычного пользователя нет доступа, требуются права суперпользователя (sudo).
  • Интерфейс TUI (Text User Interface) может показаться непривычным новичкам, но осваивается за несколько минут.

🔴 Киллер-фичи ncdu

1. Сканирование и просмотр на удалённом сервере

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

ssh user@server ncdu -o- / | ncdu -f-

2. Экспорт результатов для отчётов

ncdu позволяет экспортировать данные сканирования в файл формата JSON, что удобно для последующего анализа или создания отчётов.

ncdu -o scan.json /

Затем вы можете поделиться этим JSON-файлом или открыть его позже без повторного сканирования файловой системы.

3. Режим «только папки» (игнорирование файлов)

Для фокусировки исключительно на директориях и игнорирования служебных файловых систем вы можете использовать опцию --exclude-kernfs.

ncdu --exclude-kernfs /  # не заходит в /proc, /sys и т.д.

4. Цвета и графическая шкала

В современных версиях ncdu реализованы цветные индикаторы, подобные тем, что используются в btop, что позволяет ещё нагляднее оценивать пропорции занимаемого места.

Когда что использовать?

  • du -sh — для быстрой оценки размера одной конкретной папки.
  • ncdu — для глубокого интерактивного анализа и эффективной очистки диска.
  • df -h — для общего обзора занятости дисковых разделов.

Лайфхак

Запускайте sudo ncdu / хотя бы раз в месяц на своих серверах, и вы удивитесь, сколько ненужного «мусора» накопилось в директориях вроде /var/log или в кеше пакетного менеджера.

Теперь, вместо получасового блуждания с du, вы за 30 секунд получаете полную картину использования диска и можете оперативно приступить к очистке. Это особенно актуально, когда клиент жалуется на «тормоза» сервера, а реальная причина — это исчерпанное дисковое пространство.

А какие инструменты для мониторинга и управления дисковым пространством используете вы? Поделитесь своим опытом в комментариях!

🐱 Ссылка на GitHub