Как узнать размер папки в 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *