Как узнать размер папки в linux
При просмотре содержимого каталога с помощью команды ls можно заметить, что размер каталогов почти всегда составляет 4096 байт (4 КБ). Это размер метаинформации для каталога, а не размер самого каталога.
Для получения фактического размера каталога необходимо использовать команду du, которая расшифровывается как “disk usage” — дословный перевод “использование диска”.
Получение размера каталога
Команда du отображает используемое пространство файлами или каталогами. Для каталогов команда суммирует используемое дисковое пространство рекурсивно, то есть для каждого подкаталога в этом каталоге. Если использовать команду без аргументов, du сообщает об использовании диска в текущем каталоге и каждого из его подкаталогов в байтах.
На практике бывает нужно отображать пространство, занимаемое каталогом, и всеми его подкаталогами в удобочитаемом формате. Например, чтобы получить суммарный размер каталога /var, вы должны выполнить следующую команду:
sudo du -sh /var/
Результат будет выглядеть примерно так:
ehan@linuxtraining:~$ sudo du -sh /var 5,4G /var
Рассмотрим команду и аргументы более подробно:
- Команда начинается с sudo, потому что большинство файлов и каталогов внутри каталога /var принадлежат пользователю root и не доступны для чтения другим пользователям. Если запустить команду без sudo, команда du напечатает du: cannot read directory
s (--summarize)
— отображать только общий размер указанного каталогаh (--human-readable)
— отображать размеры файлов и директорий в человекочитаемом формате (килобайты, мегабайты, гигабайты)/var
— путь к файлу или директории размер которой необходимо узнать.
На практике бывают такие ситуации, когда необходимо узнать какого размера все вложенные каталоги в указанной директории, например, необходимо узнать какая директория занимает больше всего места в /var/log/. Для этого есть два варианта. Первый — использовать символ звездочки (*):
sudo du -sh /var/*
ehan@linuxtraining:~$ sudo du -sh /var/* 5,1M /var/backups 282M /var/cache 43M /var/crash 3,8G /var/lib 4,0K /var/local 0 /var/lock 1,3G /var/log 4,0K /var/mail 4,0K /var/metrics 4,0K /var/opt 0 /var/run 2,1M /var/snap 132K /var/spool 60K /var/tmp
Второй способ — использовать параметр —max-depth=1:
sudo du -h --max-depth=1 /var
Пример вывода:
ehan@linuxtraining:~$ sudo du -h --max-depth=1 /var 60K /var/tmp 282M /var/cache 1,3G /var/log 132K /var/spool 4,0K /var/local 5,1M /var/backups 4,0K /var/mail 2,1M /var/snap 43M /var/crash 3,8G /var/lib 4,0K /var/metrics 4,0K /var/opt 5,4G /var
Также очень полезной оказывается команда с использованием стандартного конвейера, например, все в той же ситуации с директорией /var/log/, когда необходимо найти несколько директорий, которые занимают больше всего дискового пространства. Можно использовать следующую команду:
ehan@linuxtraining:~$ sudo du -sh /var/log/* | sort -rh | head -3 1,3G /var/log/journal 1,1M /var/log/installer 664K /var/log/kern.log.1
Рассмотрим аргументы более подробно:
sort
— выполняет сортировку строк, аргумент-r (--reverse)
— выводит результаты реверсия их, т.е. от большего к меньшему,-h (--human-numeric-sort)
— сравнивает человекочитаемые числа (664К, 1,1М, 1,3G)- head с аргументом -3 выводит первых 3 результата.
В итоге мы получаем с помощью используемой команды 3 каталога, которые занимают большего всего дискового места в /var/log/
Заключение
Мы рассмотрели как в Linux можно посмотреть размер папки с помощью команды du.