Анализ использования диска при помощи ncdu






Многим пользователям UNIX и Linux известны утилиты du и df, позволяющие анализировать количество занятого и свободного дискового пространства. Это отличные консольные инструменты из разряда тех, которыми пользуются практически каждый день. В сегодняшней статье я хочу поделиться с вами недавно открытой для себя утилите ncdu — основанном на ncurses аналоге du.

Disk Usage


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

Бинарные пакеты ncdu присутствуют в репозиториях всех современных дистрибутивов Linux, *BSD; кроме того есть готовые пакеты под Mac и даже Solaris. Всем пользователям нетрадиционной ориентации, желающим получить больше информации или собрать это чудо из исходников, торжественно сообщаю домашний адрес утилиты.  В своём же уютненьком Arch Linux я без лишних телодвижений сделал следующее:

После установки программы в систему, можно сразу же приступать к непосредственному использованию. Запуск утилиты без определения флагов и параметров приведёт к тому, что она тут же приступит к сканированию дерева подкаталогов, начиная с текущего. В процессе сканирования вы сможете наглядно наблюдать за процессом, наслаждаясь кофе:

ncdu

После того, как сканирование будет завершено, вы сможете при помощи стрелок и клавиши Enter перемещаться по дереву подкаталогов:

ncdu

Нажатая клавиша i покажет подробную информацию о текущем элементе:

ncdu

Клавиатурные сокращения

  • n — сортировка по имени в обоих направлениях;
  • s — сортировка по размеру в обоих направлениях;
  • d — удалить текущий файл или каталог;
  • t — включение/отключение вывода каталогов перед файлами;
  • g — включение/отключение вывода процентного соотношения и графика;
  • a — переключение между выводом реального размера элементов и занимаемым пространством на диске;
  • e — показать/скрыть скрытые и исключённые файлы
  • r — пересчитать текущий каталог.

Флаги и параметры

ncdu  в качестве единственного параметра принимает путь к каталогу для сканирования, например:

Поскольку работа du-подобных утилит может занимать много времени, в ncdu предусмотрен вывод в файл, коотрый можно позже просмотреть. Чтобы сохранить результаты работы ncdu в файл, используется флаг -o  с указанием путь к файлу в качестве параметра:

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

В качестве пути к файлу может быть указан '-', но об этом немного ниже.

При помощи флага -0 вы можете запретить утилите совершать какой-бы то ни было вывод до тех пор, пока вся информация не будет собрана. Данный флаг имеет смысл использовать в случае, если утилита работает в графическом режиме или же выводит данные в stdout. Флаг -1 поход на предыдущий с тем отличием, что построчно выводит в stdout информацию о процессе сканирования.

По умолчанию в графическом режиме ncdu при сканировании обновляет информацию 10 раз в секунду. Если это каким-то образом негативно сказывается на работе системы или у вас глаз дёргается от быстро-меняющихся букв на экране, то можно воспользоваться флагом -q, сигнализирующим утилите о том, что обновление экрана нужно проводить не чаще раза в две секунды.

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

Также, среди оставшихся полезных опций следует отметить:

  • -x — ограничивает ncdu границами текущей файловой системы;
  • --exclude шаблон — позволяет определить шаблон имён файлов, подлежащих исключению из результатов сканирования; этот флаг можно использовать многократно
  • -X путь_к_файлу — действует аналогично предыдущему флагу, позволяя определить перечень шаблоном имён в отдельном файле

Сканирование удалённых ФС

Используя старый-добрый ssh и флаги ncdu, можно запустить ncdu на удалённой системе, а результаты просмотреть локально: