Анализ использования диска - ncdu

Теги

ncdu - это дисковая утилита для систем Unix. Его название относится к тому же назначению, что и утилита du, но ncdu использует текстовый пользовательский интерфейс.

Команда du (использование диска) суммирует размеры каталогов, включая все их содержимое и размеры отдельных файлов на Linux и Unix-подобных системах, таких как macOS. Команда помогает выслеживать пространственные объемы для дисков и папок. Другими словами, мы можем найти каталоги и файлы, которые потребляют большое пространство на жестком диске. Давайте посмотрим на команду ncdu, версию известной команды du, основанную на curses.

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

# sudo pacman -S ncdu

Как использовать команду ncdu:

ncdu

ncdu [options] [directories]

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

ncdu /etc/

ncdu /tmp/

ncdu /nfs

ncdu $HOME

Мы можем включить режим расширенной информации, передав флаг -e:

# ncdu -e

Когда вы захотите просканировать всю файловую систему, например, вашу корневую файловую систему, тогда нужно задать флаг -x:

# sudo ncdu -x /

На больших файловых серверах Unix и Linux сканирование целой (большой) директории может занять некоторое время. Поэтому вы можете просмотреть каталог и экспортировать результаты для последующего просмотра:

# sudo ncdu -1xo- / | gzip >my_root_export.gz

Мы можем использовать zcommands для чтения сжатых gzip текстовых файлов на лету и передать их на ncdu следующим образом:

# ls -l my_root_export.gz

# zcat my_root_export.gz | ncdu -f-

Опция -f загружает данный файл, ранее созданный с помощью опции -o. Если FILE эквивалентен -, то файл считывается со стандартного входа. Также возможно удаленное сканирование системы с помощью команды ssh. Просмотрите файлы локально:

# ssh -C user@system ncdu -o- / | ncdu -f-

# ssh -C vivek@192.168.2.17 ncdu -o- / | ncdu -f-

Доступен цветовой вариант:

# ncdu --color dark

# ncdu --color dark -x /

Мы можем исключить файлы, которые соответствуют PATTERN:

# ncdu --exclude '*.c'

# ncdu -x --exclude '/dir1' --exclude '/dir2' /

Следуйте сим-ссылкам и посчитайте размер файла, на который они указывают:

# ncdu -L

# ncdu -L dir1

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

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

По умолчанию в графическом режиме ncdu при сканировании обновляет информацию 10 раз в секунду.