Вступление
В Linux ls -l
список файлов и каталогов по определенному пути с их
именами, датами и размерами (использование диска). Первое, что вы
заметите при использовании этой команды, это то, что размер каталогов
всегда отображается как 4096
байт (или 4,0 КБ, если вы используете
ls -lh
), даже если они содержат файлы размером более 4 КБ. Причина в
том, что ls
возвращает метаданные для каталогов, а не фактический
размер.
Вы спросите, какой самый короткий и простой способ получить размер
каталога в Linux? Чтобы получить общий размер каталога в Linux, вы
можете использовать команду du
(disk-usage).
В этой статье мы рассмотрим некоторые из наиболее распространенных
обычаев du
команд, в том числе , но не ограничиваясь du -sh
,
du -ch
и du --max-depth
.
Получение размера каталога в Linux с помощью du
Чтобы увидеть полное описание и список аргументов команды du
,
обратитесь к man du
.
Если мы введем du
без каких-либо аргументов, он будет рекурсивно
перечислить все имена и размеры каталогов для текущего рабочего каталога
и всех подкаталогов:
rus:~/nltk_data$ du
2156 ./corpora/state_union
64 ./corpora/names
7624 ./corpora/conll2002
432 ./corpora/toolbox/rotokas
### ...
246984 ./corpora
16792 ./tokenizers/punkt/PY3
36028 ./tokenizers/punkt
49420 ./tokenizers
296408 .
Получить размер текущего рабочего каталога
Чтобы получить размер только текущего рабочего каталога, а не
подкаталогов, мы можем использовать du -s
или du --summarize
:
rus:~/nltk_data$ du -s
296408 .
Мы можем добавить -h
чтобы получить размер в более удобочитаемом
формате:
rus:~/nltk_data$ du -sh
290M .
Мы также можем использовать du
с $PATH
чтобы получить размер
каталога, который находится где-то кроме текущего рабочего каталога:
rus:~/nltk_data$ sudo du /var -sh # or "du -sh /var" if you prefer
11G /var
Обратите внимание, что вам нужно будет использовать его с sudo
для
некоторых каталогов, иначе вы получите ошибку Permission denied
Получить размер подкаталогов первого уровня
Чтобы получить размер подкаталогов первого уровня, а также общий размер каталога пути:
rus:~$ sudo du /var/* -shc
6,1M /var/backups
144M /var/cache
4,0K /var/crash
7,2G /var/lib
4,0K /var/local
0 /var/lock
3,0G /var/log
4,0K /var/mail
4,0K /var/metrics
4,0K /var/opt
0 /var/run
3,8M /var/snap
52K /var/spool
72K /var/tmp
28K /var/www
11G total
-c
или --total
возвращает общий размер пути ( 11G total
). *
перечисляет все подкаталоги первого уровня в каталоге /var/
. Мы также
можем добавить --exclude
чтобы исключить любой каталог:
rus:~$ sudo du /var/* -shc --exclude=lib
6,1M /var/backups
144M /var/cache
4,0K /var/crash
4,0K /var/local
0 /var/lock
3,0G /var/log
4,0K /var/mail
4,0K /var/metrics
4,0K /var/opt
0 /var/run
3,8M /var/snap
52K /var/spool
72K /var/tmp
28K /var/www
3,2G total
Обратите внимание, что исключение lib
также влияет на общий размер (
3,2G total
). Это также эквивалент
sudo du /var/ -h --exclude=lib --max-depth=1
rus:~$ sudo du /var/ -h --exclude=lib --max-depth=1
4,0K /var/mail
52K /var/spool
3,8M /var/snap
4,0K /var/metrics
144M /var/cache
6,1M /var/backups
72K /var/tmp
4,0K /var/crash
3,0G /var/log
4,0K /var/opt
28K /var/www
4,0K /var/local
3,2G /var/
--max-depth=N
вернет все уровни подкаталогов, которые равны или меньше
числа N
Установка --max-depth
на 1
возвращает первый уровень, 2
- второй и так далее.
Получить размер всех подкаталогов
Чтобы рекурсивно получить все подкаталоги /var/
, вы можете
использовать sudo du /var/ -h
. Или вы можете передать значение
--max-depth
которое, как вы уверены, больше или равно максимальному
уровню глубины подкаталога: sudo du /var/ -h --max-depth=999
.
Второй вариант - скорее обходной путь, чем самый эффективный способ.
Получить размер каталога в Linux с помощью tree --du -h
tree
- это рекурсивная программа для вывода списка каталогов, которая
выводит список каталогов и файлов в древовидном формате. Обратите
внимание, что tree
не устанавливается по умолчанию. Для Debian /
Ubuntu мы можем установить tree
, запустив sudo apt install tree
.
После завершения установки мы используем команду tree
для отображения
имен и размеров всех каталогов и файлов по определенному пути в
древовидном формате:
rus:~$ tree /var/www/ --du -h
/var/www/
├── [4.2K] demosite
│ └── [ 189] index.html
└── [ 15K] html
└── [ 11K] index.html
23K used in 2 directories, 2 files
Заключение
В этой статье мы узнали, как получить размеры каталогов в Linux. Вы можете использовать эти команды на удаленных машинах Linux, серверах и / или машинах Linux с графическим интерфейсом пользователя или без него.
В большинстве случаев достаточно du
command. Он также имеет то
преимущество, что устанавливается по умолчанию. С другой стороны,
команда tree
обеспечила бы более наглядный и подробный
пользовательский интерфейс для отображения почти тех же результатов, что
сделало бы ее мощной альтернативой для du
.