Как посмотреть размер папки на диске
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Анализ использования диска: методы определения размера папки в Linux/Unix
Для определения размера папки на диске в Linux/Unix-системах используются команды, которые анализируют inode (структуру метаданных файла) и подсчитывают занимаемое пространство. Основной инструмент — утилита du (disk usage). Однако, в зависимости от задачи, могут применяться разные подходы.
Основной метод: команда du
Команда du оценивает использование диска, суммируя размеры всех файлов в папке с учётом их физического расположения на диске (блоки). Базовый синтаксис:
du [опции] [путь_к_папке]
Ключевые опции и примеры:
-
Базовый вывод в человекочитаемом формате (автоматический подбор единиц: K, M, G):
du -h /var/logПримечание:
-h(human-readable) — одна из самых часто используемых опций. -
Показать суммарный размер папки без детализации по подпапкам:
du -sh /home/user/projectsГде
-s(summarize) выводит только общий итог, а-hделает его читаемым. Это самый быстрый способ получить ответ "сколько весит эта папка". -
Глубина сканирования (ограничить вывод N уровнями вложенности):
du -h --max-depth=1 /usrЭто покажет размеры всех папок непосредственно внутри
/usr, не углубляясь дальше. -
Исключение определённых шаблонов или файловых систем:
du -sh --exclude='*.cache' /home/user du -shx / # исключает подсчёт в других файловых системах (mount points) -
Сортировка вывода по размеру (полезно для поиска "тяжёлых" папок):
du -h /var | sort -hr | head -20Здесь
sort -hrсортирует человекочитаемые числа по убыванию.
Альтернативы и продвинутые сценарии
-
Использование
ncdu(NCurses Disk Usage) — интерактивная TUI-утилита:ncdu /path/to/directoryОна не только показывает размер, но и позволяет навигацию по дереву папок, сортировку и удаление файлов прямо из интерфейса. Особенно полезна для анализа больших деревьев каталогов.
-
Скрипт для детального анализа (например, топ-10 самых больших файлов в папке):
find /путь/к/папке -type f -exec du -h {} + | sort -rh | head -10 -
Учёт "логического" размера vs "размера на диске":
duпо умолчанию показывает размер на диске с учётом размера блоков файловой системы (например, маленький файл может занимать 4КБ из-за размера блока).- Чтобы увидеть фактический (логический) размер файлов, можно использовать
--apparent-size:du --apparent-size -sh /path
-
Для GUI-окружений часто доступны инструменты вроде
baobab(GNOME Disk Usage Analyzer) илиqdirstat/k4dirstat. Они визуализируют данные в виде диаграмм.
Важные нюансы для DevOps-инженера
- Символические ссылки: По умолчанию
duне следует за символическими ссылками. Для их учёта используйте-L(dereference). - Права доступа: Если у процесса нет прав на чтение некоторых подпапок,
duвыведет ошибки. Для их подавления можно перенаправить stderr:du -sh /root 2>/dev/null. - Монтированные файловые системы: Опция
-xпредотвращает пересечение точек монтирования (например, не считает/procили/mnt). - Производительность: На объёмных файловых системах или сетевых дисках (NFS) выполнение
duможет быть долгим. В таких случаях иногда эффективнее анализировать данные изdfили использовать специализированные мониторинговые системы (например, Prometheus с экспортерами).
Пример полного рабочего процесса для поиска "что съело место":
# Шаг 1: Быстрая оценка на верхнем уровне
sudo du -h --max-depth=1 / 2>/dev/null | sort -hr
# Шаг 2: Углубление в проблемную директорию (например, /var)
sudo du -h --max-depth=2 /var 2>/dev/null | sort -hr | head -20
# Шаг 3: Детальный анализ с ncdu
sudo ncdu /var/lib
В сценариях автоматизации и мониторинга размеры папок часто отслеживаются через cron-задачи, которые запускают du и сохраняют метрики в системы сбора данных (например, InfluxDB или VictoriaMetrics). Это позволяет строить тренды и прогнозировать заполнение диска.