
При выводе содержимого каталога с помощью команды ls вы, возможно, заметили, что размер каталогов почти всегда составляет 4096 байт (4 КБ). Это размер пространства на диске, используемого для хранения метаинформации каталога, а не его содержимого.
Команда, которую вам нужно использовать для получения фактического размера каталога, — du , что является сокращением от «disk usage» (использование диска).
Получение размера каталога
Команда du отображает объём файлового пространства, занимаемого указанными файлами или каталогами. Если указанный путь является каталогом, du выводит сводку использования диска каждым подкаталогом в этом каталоге. Если путь не указан, du выводит информацию об использовании диска текущим рабочим каталогом .
При запуске без каких-либо параметров du отображает использование диска указанным каталогом и каждым из его подкаталогов в байтах.
Обычно требуется отобразить размер каталога в удобном для восприятия формате. Например, чтобы узнать общий размер каталога /var , выполните следующую команду:
sudo du -sh /var
Вывод будет выглядеть примерно так:
85G /var
Давайте объясним команду и ее аргументы:
- Команда начинается с
sudo, поскольку большинство файлов и каталогов в каталоге/varпринадлежат пользователю root и не доступны для чтения обычным пользователям. Еслиsudoне указано, командаduвыведет сообщение «du: не могу прочитать каталог». -
s— отображать только общий размер указанного каталога, не отображать общие размеры файлов для подкаталогов. -
h— Размеры печати в удобочитаемом формате (h). -
/var— Путь к каталогу, размер которого вы хотите получить.
Что делать, если вы хотите отобразить использование диска подкаталогами первого уровня? Есть два варианта. Первый — использовать символ звёздочки ( * ), как показано ниже, что означает «выбрать всё, что не начинается с точки ( . )». Опция -c заставляет du вывести общую сумму всех размеров:
sudo du -shc /var/*
24K /var/db 4.0K /var/empty 4.0K /var/games 77G /var/lib 4.0K /var/local 0 /var/lock 3.3G /var/log 0 /var/mail 4.0K /var/opt 0 /var/run 196K /var/spool 28K /var/tmp 85G total
Другой способ получить отчет об использовании диска подкаталогами первого уровня — использовать опцию --max-depth :
sudo du -h --max-depth=1 /var
77G /var/lib 24K /var/db 4.0K /var/empty 4.0K /var/local 4.0K /var/opt 196K /var/spool 4.0K /var/games 3.3G /var/log 5.0G /var/cache 28K /var/tmp 85G /var 85G total
По умолчанию команда du показывает объём дискового пространства, занимаемый каталогом или файлом. Чтобы узнать видимый размер каталога, используйте параметр --apparent-size . «Видимый размер» файла — это фактический объём данных в нём.
sudo du -sh --apparent-size /var
При передаче каталога через SCP , Rsync или SFTP объём данных, передаваемых по сети, равен кажущемуся размеру файлов. Поэтому объём занятого места на диске источника, отображаемый командой du (без --apparent-size ), не совпадает с объёмом на целевом компьютере.
Команду du можно также комбинировать с другими командами, используя вертикальные черты.
Например, чтобы вывести 5 самых больших каталогов в каталоге /var , вы должны передать вывод du команде sort которая отсортирует каталоги по их размеру, а затем передать вывод команде head , которая выведет только 5 самых больших каталогов:
sudo du -h /var/ | sort -rh | head -5
85G /var/ 77G /var/lib 75G /var/lib/libvirt/images 75G /var/lib/libvirt 5.0G /var/cache/pacman/pkg
Заключение
В Linux размер каталога можно узнать с помощью команды du .
Если у вас есть вопросы или замечания, оставьте комментарий ниже.
Связанные руководства