При просмотре содержимого каталога с помощью команды ls вы, возможно, заметили, что размер каталогов почти всегда составляет 4096 байт (4 КБ). Это размер пространства на диске, который используется для хранения метаинформации для каталога, а не того, что он содержит.
Команда, которую вы хотите использовать, чтобы получить фактический размер каталога, du является сокращением от «disk usage». Мы покажем вам, как использовать эту команду.
Получение размера каталога
Команда du отображает объем файлового пространства, используемого указанными файлами или каталогами. Если указанный путь является каталогом, du суммирует использование диска каждым файлом и подкаталогом в этом каталоге. Если путь не указан, du сообщит об использовании диска в текущем рабочем каталоге.
Если вы запустите du без какой-либо опции, он отобразит использование диска указанным каталогом и каждым из его подкаталогов в байтах.
В большинстве случаев вы хотите отобразить только пространство, занимаемое каталогом, в удобочитаемом формате. Например, чтобы получить общий размер каталога /var, вы должны выполнить следующую команду:
sudo du -sh /var
Вывод будет выглядеть примерно так.
29G /var
Давайте объясним команду и ее аргументы:
- Команда начинается с того, sudoчто большинство файлов и каталогов внутри каталога /var принадлежат пользователю root и недоступны для чтения обычным пользователям. Если вы опустите sudo, команда du выведет «du: not read directory».
- s – Отображать только общий размер указанного каталога, не отображать итоговые размеры файлов для подкаталогов.
- h- Размеры печати в удобочитаемом формате (h).
- /var – Путь к каталогу, который вы хотите получить размер.
Что делать, если вы хотите отобразить использование диска в подкаталогах первого уровня. У вас есть два варианта, первый – использовать символ звездочки, как показано ниже, что означает «все, что не начинается с точки ( .)». Переключатель shc указует напечатать итог всех размеров:
sudo du -shc /var/*
2.0M /var/backups 111M /var/cache 8.8G /var/lib 4.0K /var/local 0 /var/lock 33M /var/log 4.0K /var/mail 4.0K /var/opt 0 /var/run 988M /var/spool 44K /var/tmp
Другой вариант – использовать переключатель –max-depth и указать уровень подкаталогов:
sudo du -h --max-depth=1 /var
19G /var/www 111M /var/cache 33M /var/log 988M /var/spool 2.0M /var/backups 9.2G /var/lib 4.0K /var/mail 4.0K /var/opt 4.0K /var/local 44K /var/tmp 29G /var
По умолчанию утилита du показывает дисковое пространство, используемое каталогом или файлом. «Очевидный размер» файла – это количество данных в нем.
Чтобы найти видимый размер каталога, используйте переключатель –apparent-size.
sudo du -sh --apparent-size /var
Когда вы передаете каталог через SCP , Rsync или SFTP, объем данных, который будет передаваться по сети, равен кажущемуся размеру файлов. Вот почему размер пространства на диске, который используется в источнике при отображении с помощью du (без –apparent-size), не будет таким же, как размер в целевой папке.
Команду du также можно комбинировать с другими командами с помощью каналов. Например, чтобы напечатать 5 самых больших каталогов в каталоге /var, вы бы использовали:
sudo du -h /var/ | sort -rh | head -5
29G /var/ 19G /var/www 17G /var/www/andreyex/data/www 17G /var/www/andreyex/data 17G /var/www/andreyex
Заключение
Из этой статьи вы узнали, как получить размер каталога с помощью команды du.
Если у вас есть какие-либо вопросы или замечания, пожалуйста, оставьте комментарий ниже.