Команда ncdu
Более удобный способ найти что занимает место на диске можно с помощью команды ncdu. Утилита ncdu (Ncurses Disk Usage) способна делать всё то же самое, что и утилита du и даже немного больше. К тому же, она предоставляет пользователю удобный в использовании псевдографический интерфейс, с помощью которого можно быстро перемещаться по дереву системы, оценивая размеры интересующих элементов и папок.
Фактически, ncdu может выполнять функции полноценного браузера системы, при этом имеет большое количество опций, позволяющих настраивать псевдоинтерфейс для разных режимов работы, экспортировать и импортировать результаты работы в файлы, выполнять сортировки, экономить сетевой трафик, если это нужно, когда анализируется удалённая (например по SSH) система.
По-умолчанию, выполнение команды ncdu без параметров, выводит файловый браузер, в котором после предварительного сканирования (с показом прогресса выполнения) отображается список элементов и подкаталогов текущего каталога. По этому списку можно перемещаться, используя клавиши курсора, спускаться в подкаталоги (<Enter>) выходить из них, при этом информация о размере представленных элементах и папок отображается «как на ладони». В строке состояния отображается общий используемый объём (Total disk usage), фактический объём (Apparent size), а также количество файлов и папок для текущего анализируемого каталога.
- Для Debian систем (rpm-пакеты) (в т.ч. Ubuntu) командой apt-get install ncdu
- Для Red Hat систем (dpkg-пакеты) командой yum install ncdu
Основные опции команды ncdu:
Опция | Назначение |
-o ФАЙЛ | Позволяет экспортировать результаты работы в указанный файл |
-f ФАЙЛ | Загружает из файла для отображения данные ранее экспортированные с помощью опции -o |
-0 | Не никаких информационных сообщений при сканировании файловой системы |
-1 | Подобна опции -0, но выдаёт единственную строку о статусе выполненного действия. По-умолчанию используется при экспорте в файл |
-q | Тихий режим. Во время сканирования директории экран с результатами сканирования будет обновляться каждые 2 секунды, вместо 10 раз за секунду. Обычно используется при работе с удаленными системами |
-r | Включает режим «только для чтения» для отключения встроенной функции удаления. Не работает с опцией -o |
-x | Не выходить за рамки текущей используемой файловой системы |
—exclude ШАБЛОН | Исключает из подсчёта значения размеров файлов, имена которых удовлетворяют шаблону, но эти файлы будут отображаться в списке |
-X ФАЙЛ,—exclude-from-file | Исключает из подсчёта значения размеров файлов, имена которых удовлетворяют шаблону из файла, но они также будут отображаться в списке |
Интерфейс ncdu действительно очень дружественный — размеры всегда отображаются в «человекопонятных» единицах.
Для работы с псевдо интерфейсом ncdu предусмотрен целый набор «горячих клавиш», позволяющих удалять выбранные файлы и каталоги, включать режим представления используемого пространства в процентах, отображать информацию о выбранных элементах, а также выполнять другие полезные функции. Об этом более подробно можно прочитать в соответствующих man-страницах в разделе «KEYS», используя команду man ncdu.
Примеры команд ncdu
Сделаем поиск занимаемого пространства с помощью ncdu
ncdu /

Снова видим большой каталог /var, и уже с помощью клавишь и ENTER мы можем передвигаться по каталогам. Видим каталог log

А здесь мы видим наши большие логи

Еще несколько полезных примеров.
Сканирование объёмных каталогов с экспортом/архивированием в лог для последующего использования или просмотра:
$ ncdu -1xo- / | gzip > usage_fs.gz $ zcat usage_fs.gz | ncdu -f-
Сканирование текущей директории, экспорт результатов в лог, и последующий просмотр этих результатов в браузере ncdu:
$ ncdu -o- | tee usage_fs.txt | ncdu -f-
Работа с удалённой системой:
ssh -C username@hostname ncdu -o- / ncdu -f-
В данной команде опция -C используется для утилиты ssh для сжатия сетевого трафика при некачественном или медленном соединении.