Как получить размер каталога в Linux
Как получить размер каталога в Linux
How to Get the Size of a Directory in Linux
Команда, которую вы хотите использовать, чтобы получить фактический размер каталога du , сокращенно означает «использование диска».

При выводе содержимого каталога с помощью ls
команды вы могли заметить, что размер каталогов почти всегда составляет 4096 байт (4 КБ). Это размер пространства на диске, который используется для хранения мета-информации для каталога, а не того, что он содержит.
Получение размера каталога
Команда du
отображает объем файлового пространства, используемого указанными файлами или каталогами. Если указанный путь является каталогом, du
суммируется использование диска каждым подкаталогом в этом каталоге. Если путь не указан, du
сообщает об использовании диска в текущем рабочем каталоге.
Когда вызывается без каких-либо опций, du
отображает использование диска данного каталога и каждого из его подкаталогов в байтах.
Как правило, вы хотите отобразить пространство, занимаемое каталогом, в удобочитаемом формате. Например, чтобы получить общий размер /var
каталога, вы должны выполнить следующую команду:
sudo du -sh /var
Вывод будет выглядеть примерно так:
85G /var
Давайте объясним команду и ее аргументы:
- Команда начинается с того,
sudo
что большинство файлов и каталогов внутри/var
каталога принадлежат пользователю root и недоступны для чтения обычным пользователям. Если опустить команду напечатает «ей: не может читать каталог».sudo
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
команду.