Как узнать размер каталога в Linux

При составлении списка содержимого каталога с помощью команды 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 .

Если у вас есть вопросы или замечания, оставьте комментарий ниже.

Оставьте комментарий