Как узнать сколько занимает места директория в Linux
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Определение размера директории в Linux
В Linux для определения размера директории используется команда du (disk usage). Это основной инструмент для анализа использования дискового пространства. Вот наиболее полезные варианты ее использования:
Базовое использование команды du
du -sh /путь/к/директории
Где:
-s(summarize) — показывает общий размер директории без детализации по поддиректориям-h(human-readable) — форматирует вывод в удобочитаемом виде (КБ, МБ, ГБ)
Пример:
du -sh /var/log
# Вывод: 2.4G /var/log
Детальный анализ вложенных директорий
Для просмотра размеров всех поддиректорий внутри указанного пути:
du -h /путь/к/директории | sort -hr
Или с ограничением глубины сканирования:
du -h --max-depth=1 /путь/к/директории | sort -hr
Пример:
du -h --max-depth=1 /var | sort -hr
# Вывод покажет все директории первого уровня внутри /var, отсортированные по размеру
Полезные опции команды du
-a— показывать размеры всех файлов, а не только директорий--apparent-size— показывать "логический" размер файлов вместо фактически занимаемого места (полезно для разреженных файлов)--exclude=PATTERN— исключить файлы/директории по шаблону-c— показать итоговую сумму в конце вывода--time— добавить информацию о времени последнего изменения
Практические примеры из моей практики DevOps
1. Поиск самых больших директорий в системе:
du -h --max-depth=1 / | sort -hr | head -20
2. Мониторинг размера логов с исключением определенных расширений:
du -sh --exclude="*.gz" --exclude="*.bz2" /var/log
3. Сравнение фактического и логического размера (актуально для баз данных):
du -sh /var/lib/postgresql
du -sb /var/lib/postgresql
Альтернативные инструменты
1. ncdu (NCurses Disk Usage) — интерактивная утилита с текстовым интерфейсом:
ncdu /путь/к/директории
2. Использование find с stat для сложных сценариев:
find /путь/к/директории -type f -exec du -ch {} + | tail -1
3. Графические инструменты:
- baobab (Disk Usage Analyzer в GNOME)
- kdirstat или qdirstat для KDE
Важные нюансы для DevOps—инженеров
-
Символические ссылки: По умолчанию
duне переходит по символическим ссылкам. Используйте-Lдля их разыменования. -
Монтирования: Команда обычно не пересекает границы точек монтирования, что предотвращает учет сетевых дисков или других файловых систем.
-
Права доступа: Для сканирования некоторых системных директорий могут потребоваться права root.
-
Производительность: При работе с очень большими деревьями файлов (миллионы файлов) используйте осторожно — процесс может занять значительное время и создать нагрузку на диск.
-
Разница между
dfиdu: Помните, чтоdfпоказывает свободное место на файловой системе, аdu— фактическое использование директорией.
В production—средах я часто создаю скрипты для регулярного мониторинга критических директорий (логи, кэши, данные приложений) и интеграции с системами мониторинга типа Prometheus или Zabbix для proactive—обнаружения проблем с дисковым пространством.