Полезное: узнать размер каталога, папки в Linux/FreeBSD. DU

Описание

Команда du позволяет отображать размер дискового пространства, занятого файлами или каталогами в операционных системах Linux и FreeBSD

Синтаксис

du [-Aclnx] [-H | -L | -P] [-g | -h | -k | -m] [-a | -s | -d depth] [-B blocksize] [-I mask] [-t threshold] [file …]

du [опции] [каталоги или файлы]

Основные опции

–b  выводит информацию в байтах(а не в килобайтах).
–c  выводит итоговую информацию об использовании дисковой памяти.
–k  выводит информацию в килобайтах(по умолчанию).
–s  выводит итоговую информацию об использовании дискового пространства без информации о каталогах.
-h  вывести информацию в человекочитаемом виде.

Полезные примеры использования

Стоит отметить, что синтаксис утилиты du в Linux и FreeBSD может незначительно отличаться набором дополнительных аргументов, но базовые опции полностью идентичны

Узнать размер папки opt/files/

# du -sh /opt/files/
9.9G /opt/files/

Узнать размер папки /opt/files/ и размеры подкаталогов:

# du -h /opt/files/
1.8G /opt/files/video
2.0G /opt/files/music
3.8G /opt/files/

Продвинутые примеры использования du во FreeBSD и Linux

Часто возникает необходимость не просто узнать размер одной папки, а найти самые «прожорливые» директории на диске. Для этого можно комбинировать du с другими системными утилитами

  • Сортировка папок по размеру:
    Вывести список подкаталогов в текущей директории и отсортировать их от меньшего к большему:
    du -h -d 1 | sort -h
  • Поиск ТОП-10 самых больших папок:
    Если на сервере под управлением Linux или FreeBSD заканчивается свободное место, используйте следующую команду для поиска десяти крупнейших объектов:
    du -a /var | sort -n -r | head -n 10
  • Исключение определенных файлов из подсчета:
    Если вам нужно посчитать размер директории, пропустив, например, логи или кэш-файлы:
    du --exclude="*.log" -sh /path/to/directory

Использование этих комбинаций позволяет быстро проводить аудит дисковой подсистемы и предотвращать критическое переполнение разделов

Особенности подсчета размера папок: du vs df

Начинающие системные администраторы часто сталкиваются с ситуацией, когда утилита du и системная команда df показывают совершенно разные данные о свободном и занятом месте в FreeBSD или Linux.

Разница в показаниях объясняется фундаментальными различиями в алгоритмах их работы:

Команда du (Disk Usage) — сканирует файловую систему шаг за шагом. Она заходит в каждый каталог, считает размер каждого отдельного файла и суммирует их. Если у пользователя нет прав на чтение определенной папки, утилита пропустит ее, и итоговый размер окажется меньше реального

Команда df (Disk Free) — не читает файлы. Она обращается напрямую к суперблоку файловой системы и мгновенно узнает общее состояние пространства

Главная причина расхождения — удаленные файлы, которые все еще открыты запущенными процессами (например, активным веб-сервером или демоном логирования). Физически файл уже удален с диска, и du его не видит. Однако процесс продолжает удерживать дескриптор файла, место на накопителе не освобождается, и df продолжает учитывать его как занятое

Чтобы решить эту проблему в Linux или FreeBSD, необходимо найти и перезапустить заблокировавший файл процесс. Сделать это можно с помощью утилиты lsof | grep deleted или команды fstat, после чего показатели обеих утилит придут в норму

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *