← Назад к вопросам

Как узнать сколько занимает места директория в Linux

1.0 Junior🔥 101 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Определение размера директории в 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—инженеров

  1. Символические ссылки: По умолчанию du не переходит по символическим ссылкам. Используйте -L для их разыменования.

  2. Монтирования: Команда обычно не пересекает границы точек монтирования, что предотвращает учет сетевых дисков или других файловых систем.

  3. Права доступа: Для сканирования некоторых системных директорий могут потребоваться права root.

  4. Производительность: При работе с очень большими деревьями файлов (миллионы файлов) используйте осторожно — процесс может занять значительное время и создать нагрузку на диск.

  5. Разница между df и du: Помните, что df показывает свободное место на файловой системе, а du — фактическое использование директорией.

В production—средах я часто создаю скрипты для регулярного мониторинга критических директорий (логи, кэши, данные приложений) и интеграции с системами мониторинга типа Prometheus или Zabbix для proactive—обнаружения проблем с дисковым пространством.