2.11.14. Аналіз дискового простору за допомогою ncdu

Утиліта ncdu (NCurses Disk Usage) дозволяє аналізувати дисковий простір в інтерактивному режимі. Вона відображає дані в псевдографічному інтерфейсі і дозволяє швидко переміщатися по деревоподібній структурі каталогів. Доступна за замовчуванням на всіх серверах звичайного та бізнес-хостингу.

Для запуску підключіться до хостинг-акаунту по SSH і виконайте команду:

ncdu

Після запуску ncdu сканує дисковий простір для дерева каталогів, починаючи з поточного. Перервати сканування можна клавішею q.

При запуску можна явно задавати, що потрібно сканувати:

  • Весь дисковий простір хостинг-акаунта незалежно від поточного каталогу:
    ncdu ~
  • Вміст тільки певного каталогу:
    ncdu ~/шлях/до/каталогу

Утиліту можна запускати з різними ключами:

  • –exclude=шлях/до/каталогу — виключити вказаний каталог зі сканування.
  • -o result.txt — виконати сканування та зберегти результати у вказаному файлі.
  • -f result.txt — замість сканування відкрити результати із вказаного файлу. ℹ️ За замовчуванням утиліта вважає, що файл не має відношення до поточної файлової системи, тому клавіші повторного сканування, видалення файлів/каталогів і відкриття консолі будуть вимкнені.
  • -e — розширене сканування. Додатково скануються: час зміни файлів і каталогів, права доступу, інформація про власника. ⚠️ При роботі з результатами сканування з файлу ключ повинен використовуватися як при збереженні, так і при відкритті.
  • –exclude шаблон — виключити зі сканування файли та каталоги, що збігаються з шаблоном (вони будуть відображені, але не будуть враховані в статистиці). Ключ можна вказувати кілька разів.
  • -X файл, –exclude-from файл — виключити зі сканування файли та каталоги, що збігаються з шаблонами, перерахованими у вказаному файлі (кожен шаблон з нового рядка).
  • -L, –follow-symlinks — при скануванні слідувати за симлінками і враховувати в статистиці розміри файлів і каталогів, на які вони вказують.
  • -r — заборона видалення файлів і каталогів з утиліти (режим тільки для читання).
  • -rr — заборона відкриття консолі в поточному каталозі.
  • –confirm-quit — вимагати підтвердження при виході.

Повний список ключів можна переглянути в довідці, виконавши команду:

man ncdu

Після сканування утиліта виводить дані по всіх каталогах у вигляді списку:

Інформація виводиться в декілька стовпців:

  • У першому стовпці можуть виводитися спеціальні позначення, серед яких:
    • e — порожній каталог.
    • @ — елемент не є файлом або каталогом (наприклад, симлінк, сокет тощо).
    • < — файл/каталог виключений зі статистики (див. ключі).
    • ! — помилка при читанні каталогу.
    • . — помилка при читанні підкаталогу (розмір може бути невірним).
  • Розміри та одиниці вимірювання. Можуть виводитися в одному з двох форматів:
    • З використанням префікса 2 у вигляді ступенів від 1024 (KiB, MiB тощо).
    • З використанням префікса 10 у вигляді ступенів від 1000 (KB, MB тощо).
  • Граф — кількість символів # показує, який із файлів/підкаталогів у поточному каталозі займає більше місця.
  • Назва файлу/каталогу.

Внизу відображається інформація про поточний каталог:

  • Об'єм займаного місця на диску.
  • Реальний розмір вмісту каталогу.
  • Кількість елементів (інодів).
  • , , j, k — переміщення по списку вгору-вниз.
  • , l, Enter — перехід у вибраний каталог.
  • , h — повернення в батьківський каталог.
  • a — режим відображення розміру: реальний розмір або зайняте місце на диску. ℹ️ Інформація на диску зберігається блоками, тому зайняте місце може бути більшим за реальний розмір файлу.
  • n — сортування за іменем: за алфавітом або в зворотному порядку.
  • s — сортування за розміром: за зменшенням або збільшенням.
  • e — увімкнення/вимкнення відображення прихованих елементів (файлів і каталогів з крапкою на початку або виключених зі сканування).
  • g — режим відображення зайнятого місця: граф, відсотки, обидва варіанти, не відображати. Відсоток відноситься до поточного каталогу, граф — до найбільшого елемента в поточному каталозі.
  • i — інформація про вибраний об'єкт (назва, повний шлях, тип, зайняте місце на диску і реальний розмір). У розширеному режимі (з ключем -e) додатково виводяться права і дата зміни.
  • r — повторне сканування поточного каталогу.
  • d — видалення вибраного файлу або каталогу.
  • c — увімкнення/вимкнення відображення кількості вкладених елементів для кожного каталогу (інодів).
  • C — сортування за кількістю вкладених елементів (інодів): за зменшенням або збільшенням.
  • t — увімкнення/вимкнення відображення каталогів перед файлами: каталоги відображаються на початку списку або разом із файлами.
  • m — увімкнення/вимкнення відображення часу останньої зміни файлів/каталогів (mtime). ⚠️ Доступно тільки в розширеному режимі (з ключем -e).
  • M — сортування за часом останньої зміни: за зменшенням або збільшенням. ⚠️ Доступно тільки в розширеному режимі (з ключем -e).
  • q — вихід.
  • b — відкриття консолі в поточному каталозі (після виходу буде повернення в ncdu).
  • ? — перегляд короткої довідки.

Сканування всього вмісту хостинг-акаунта із збереженням результатів у файл та його архівацією:

  • Сканування:
    ncdu -1xo- ~ | gzip > result.gz
  • Відкриття файлу для аналізу:
    zcat result.gz | ncdu -f-

Сканування поточного каталогу із збереженням результатів у файл та відкриттям для аналізу:

ncdu -o- | tee result.txt | ncdu -f-
Зміст