Введение
При выводе списка содержимого каталога с помощью команды ls
вы можете заметить, что размер каталогов почти всегда составляет 4096 байт (4 КБ). Это размер дискового пространства, используемого для хранения метаинформации каталога, а не того, что он содержит.
Команда, которую вы захотите использовать для получения фактического размера каталога, называется du
, что означает использование диска.
Получить размер каталога
Команда 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
.