Как узнать, сколько места занимают файлы и директории в Linux

Visitors have accessed this post 53946 times.
Для того, чтобы через интерфейс командной строки узнать, сколько места занимают файлы и директории, в Linux используется команда du.
du расшифровывается как disk usage (использование диска).
Синтаксис команды du:
du [OPTION]. [FILE] [directory]
Если запустить du без указания параметров, то она выведет все директории и поддиректории текущей директории.
Чтобы проверить размер директории
Если вам нужно узнать размер директории в понятном человеку формате, используйте команду:
-s (от английского summarize) — отображает только общее значение для каждого аргумента.
-h , —(от английского human readable) — отображает значения в человекочитаемом формате, например, 70G , 215M.
Если нам нужно узнать размер конкретной директории, то нужно запустить команду вида:
# du -sh directory_name/
Допустим, наша директория называется marusya, ее размер можно узнать, запустив:
Получаем вывод вида
Если нужно отображать размер директории в конкретных единицах измерения (килобайтах\мегабайтах\гигабайтах)
По умолчанию команда du отображает размер директории в байтах. В случае, если нам удобней отображать размер файлов и директорий в килобайтах или мегабайтах, используется все та же команда du в Linux. Но к ней добавляется флаг -k (килобайты) или -m (мегабайты).
Установим отображение использования дискового пространства в килобайтах для нашей директории marusya.
А теперь — в мегабайтах,
В этом случае отображается использование дискового пространства директорией, но не размер ее файлов.
Чтобы узнать размеры файлов, нам понадобится флаг -a.
Чтобы узнать общий итоговый размер
Чтобы просмотреть общий размер всех файлов и поддиректорий в директории, используется флаг -c:
Чтобы узнать только общий размер директории, включая все поддиректории, добавьте к команде du команду grep.
# du -ch marusya | grep docs
Еще некоторые флаги, которые использует команда du Linux.
-D — если нужно обработать только перечисленные в командной строке символьные ссылки.
-d, —max-depth=Х — если нужно определить общий размер до определенного (Х) уровня древовидной структуры.
-t, —threshold=size — если нужно найти только файлы, размер которых больше определенного значения.
—time — используется для вывода времени, когда производилось последнее изменение в директории.
-X, —exclude-from=ФАЙЛ — если нужно исключить из расчета файлы, соответствующие определенному образцу.
От редакции
Если вам интересно посещать бесплатные онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN.
*Анонсы мероприятий каждую неделю
Просмотр свободного места на диске/разделах в Linux

20.02.2021

VyacheslavK

Linux

комментария 4
В данной статье мы расскажем, как проверить свободное дисковое пространство на хосте под управлением Linux через консоль. Мы рассмотрим несколько базовых команд с помощью которых можно узнать размер не только одного диска или директории, а целого дерева каталогов. Отдельно выделим комбинированные команды для получения более детальной информации о размерах вложенных папок. В конце статьи мы приведем пример простого скрипта для мониторинга дискового пространства с отправкой уведомлением на почтовый ящик администратора.
Для чего нужно следить за дисковым пространством в системе? Разделы в Linux устроены так, что их можно заполнить на 100% и даже после такого, система продолжит работать. А вот отдельные сервисы могут пострадать, что может повлечь за собой необратимые последствия.
Просмотр занятого места на разделах командой du
Выведем список дисков в системе и их размер:

В моем случае, на виртуальной машине доступен 1 диск размером 40Гб.
Чтобы получить более детальную информацию по двум разделам, которые созданы на диске, можно использовать:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 40G 0 disk ├─vda1 253:1 0 512M 0 part /boot └─vda2 253:2 0 39.5G 0 part /
В листинге команды видно, что один раздел используется под /boot, а второй под корень системы.
Новый диск в Linux добавляется так. Для управления разделами и разметкой также удобно использовать parted.
Перейдем к утилите, вокруг которой мы построили данную инструкцию:
df – это команда позволяет отобразить информацию о свободном/доступном месте на диске, файловой системы раздела.
Чтобы листинг команды был более читабелен, нужно использовать ее с опциями. Например:

- Filesystems – имя файловой системы
- Size – размер раздела
- Used – используемое дисковое пространство
- Avail – доступное дисковое пространство(свободное)
- Use% — занятое дисковое пространство в процентах
- Mounted on – смонтировано. Указывает директорию, к которой примонтирован раздел.
При использовании опции -h дисковое пространство выводится в Гб. Если размер меньше 1Гб, то вывод будет в Мб.
df -m – информация будет отображена в Мб.
df -k — информация будет отображена в Кб.
df -T – к выводу добавиться тип файловой системы
df -hT /boot – с данной опцией, будет предоставлена информация

Опции можно комбинировать между собой, для получения нужной информации.
Полная справка по df доступна через команду:
Получаем размеры директорий командой du
Вторая команда, которую мы рассмотрим, это du. du – команда отображающая размер директории.
Дополнительные опции для du:
- du -h – показывает информацию в читабельном формате. Можно указать путь к конкретной директории, если применить без этого, покажет информацию в текущем каталоге.
- du -sh – покажет размер директории в которой вы находитесь. Можно указать путь к директории.
- du -m – вывод информации в Мб.
- du -h —time – выведет информацию с дополнительным столбцом по времени изменения директории или файлов.

Больше информации по утилите, можно увидеть так:
При администрировании сервера, можно комбинировать вышеописанные команды. Например, выведем размер всех вложенных каталогов в /var/log и отсортируем вывод от большего к меньшему (чтобы самые большие каталоги оказались вверху списка):
# du -h /var/ | sort -rn

# du —max-depth=1 -h – выводит на экране размер вложенных директории, не дальше 1-го уровня вложенности.
Таким образом, вы легко можете определить сколько места занимают разные директории, и быстрой найти большие каталоги, которые занимают очень много места.
Bash скрипт мониторинга свободного места в Linux
Рассмотрим простой bash скрипт, для мониторинга дискового пространства на сервере и отправке email уведомления администратору, если места недостаточно.
#!/bin/bash
CURRENT=$(df / | grep / | awk ‘< print $5>‘ | sed ‘s/%//g’)
THRESHOLD=90
if [ «$CURRENT» -gt «$THRESHOLD» ] ; then
mail -s ‘Заканчивается дисковое пространство’ -r [email protected] В вашем корневом разделе сервера server1, осталось слишком мало дискового пространства. Используется: $CURRENT%
EOF
fi
При достижении заполняемости директории / до 90% к вам на почту будет отправляться уведомление. Добавьте данный скрипт в cron и мониторьте вашу систему. Можно изменить скрипт, чтобы он смотрел за размером определенного раздела или каталога.
Предыдущая статья Следующая статья
Как Узнать Свободное Место на Диске в Linux

В этом руководстве мы расскажем, как посмотреть свободное место на диске в Linux с помощью командной строки. Вы узнаете отдельные команды, которые при их совместном использовании, могут стать мощным инструментом в управлении вашим диском. Это руководство может вам помочь, если вам необходимо освободить место на вашем компьютере или вы просто хотите узнать какие файлы занимают много места на вашем жестком диске.
Прокачайте ваш Linux сервер, воспользовавшись скидками на VPS-хостинг в Hostinger!
Что вам понадобится
Перед тем как вы начнете это руководство, вам понадобится следующее:
- Доступ к командной строке
Шаг 1 — Анализ свободного места на диске в Linux
Первой командой, которой мы воспользуемся станет df. Это команда означает файловая система диска. Она отобразит свободное место на диске в Linux. После выполнения команды, вы увидите несколько стандартных колонок: Файловая система, Размер, Использовано, Доступно, %Использования, Смонтирован на. Выглядеть это должно так:

- Файловая система(filesystem)- предоставляет имя файловой системы.
- Размер (size) — дает общий размер всех файлов в конкретной файловой системе.
- Использовано (used) — показывает количество уже использованного места в конкретной файловой системе.
- Доступно (avail) — показывает, как много свободного места осталось в конкретной файловой системе.
- %Использования (use%) — показывает процент использованного дискового пространства.
- Смонтирован на (mounted on) — последняя колонка показывает точку монтирования файловой системы.
С использованием определенных опций для этой команды, будут показаны другие колонки. Мы рекомендуем использовать эту команду с такими дополнительные опциями:
- df -h — данная опция отобразит информацию в удобном, более понятном для человека формате. При использовании этой команды, дисковое пространство будет показано в Гб (но только не в том случае, если оно меньше одного Гб).
- df -m — может быть использована для отображения информации в Мб.
- df -k — также как и предыдущая, может быть использована для отображения использования файловой системы в Кб.
- df -T — эта опция отобразит тип файловой системы (появится новая колонка).
- df -ht /home — использовав эту опцию, вы сможете увидеть информацию о конкретной файловой системе (в более удобном для человека формате).
- df —help — поможет отобразить полезные команды, которые вы можете использовать и информацию о них.
Еще одна полезная команда это du. Она означает использование диска. Эта команда, покажет вам информацию об использовании дискового пространства файлами и папками на компьютере Linux. Эта команда очень полезна, так как позволяет рекурсивно собирать информацию об использовании файлами и папками дискового пространства. Вы можете использовать эту команду для того, чтобы получить информацию об определенной папке и увидеть информацию о том, что внутри нее. Вот еще немного полезных опций для использования с этой командой:
- du /home/user/Desktop/ — эта опция позволяет посмотреть на Desktop (Рабочий стол) пользователя и увидеть информацию об использовании дискового пространства файлами и папками, расположенными на вашем рабочем столе (все подпапки также включены).
- du -h /home/user/Desktop/ — также как и df, позволяет увидеть информацию в более удобном для человека формате.
- du -sh /home/user/Desktop/ — опция -s даст нам полный объем определенной папки (в этом случае покажет полный объем папки Desktop).
- du -m /home/user/Desktop/ — также как и с df, предоставит вам информацию в Мегабайтах (вы можете использовать -k, чтобы увидеть информацию в Килобайтах.
- du -h —time /home/user/Desktop/ — это даст вам информацию, основанную на последнем изменении файлов и папок.
- df —help — покажет вам другие полезные команды, которые вы можете использовать и информацию о них.
Шаг 2 — Комбинирование команд и очистка дискового пространства
Вы можете комбинировать команды, которые вы изучили в данном руководстве, и другие, о которых вы можете узнать из наших руководств. Комбинируя их, вы можете получить довольно полезные результаты, которые помогут вам определить, что нужно удалить для освобождения места на диске. Вот некоторые советы, которыми мы хотели бы поделиться с вами:
- Для начала, не забывайте проверить какой раздел диска самый загруженный. Вы можете сделать это при помощи уже изученной команды df.
- Возможно, самая популярная комбинация это: du -h /home/user/Desktop/ | sort -rn. Во-первых, мы собираем информацию о списке ваших файлов и папок на Desktop (Рабочем столе) в более читаемом для человека формате и передаем эту информацию другой команде sort, которая, используя правильные опции, сортирует ваши файлы и папки по их размеру, от самых больших к самым маленьким. Это даст нам понимание того, где вы должны сфокусировать свое внимание для освобождения дискового пространства.
- Другой очень полезной комбинацией станет: du -h /home/user/Desktop | grep ‘^\s*[0-9\.]\+G’. Она полезна в том случае, если у вас большое количество маленьких файлов и вы хотите их отфильтровать от больших. Вы также можете использовать +M вместо +G, в таком случае будут выбраны файлы тяжелее одного Мб.
- Вы можете исключить определенные типы файлов при помощи опции —exclude=»*.bin». Она используется с командой du, в случае если вы хотите получить список файлов, который не будет содержать определенные типы файлов. К примеру: du -h /home/user/Desktop/ —exclude=»*.txt» | sort -rn — исключит из результата все файлы с расширением .txt.
Заключение
В этом руководстве вы научились базовым командам, которые помогут вам, как узнать свободное место на диске в Linux. Для получения дополнительной информации используйте команду man command, она предоставит вам руководство с гораздо большей информацией о командах и опциях, которые вы можете использовать. Также, не забудьте проверить другие наши руководства посвященные данной теме!
Чем занято место на диске Linux
Ситуация, когда на разделах Linux заканчивается место может быть очень часто встречаемой. На вебсерверах такая проблема возникает еще чаще, т.к. большое количество посетителей и ошибки в программах могут приводить к огромному росту лог-файлов и т.д. и появляется необходимость определить чем занято место на диске Linux, чтобы удалить ненужные данные и освободить место. Есть несколько вариантов как это сделать.
1-й способ. Утилита du — подсчет занимаемого места.
Воспользоваться встроенной утилитой du. Сделать это достаточно просто. Например, чтобы определить в текущей папке занимаемое место всеми подкаталогами и файлами, нужно использовать команду:
du -sm *
Вывод этой команды будет примерно такой:
514 folder1 893 folder2 44 file1.sh 53 file2.txt
Немного поясню использованные ключи:
s — означает, что нужно вывести суммарное занимаемое место, т.е. например, не показывать каждый файл из папки folder1 и занимаемое им место, а показать, сколько всего места занимают все файлы в папке folder1
m — означает вывод данных в Мб, можно использовать вместо него ключи b (в байтах) и k (в килобайтах)
* — означает подсчитать все объекты в текущем каталоге. Если не указать * , то будет подсчитано все занимаемое место текущего каталога. Так же, можно подсчитать сколько места занимает конкретная папка со всеми файлами и подкаталогами в ней, для чего нужно написать вместо * название нужного каталога.
Когда папок и файлов много, можно отсортировать результаты, чтобы было проще определить, какая папка или файл заняли больше всего места:
du -sm * | sort -n
Эта простая команда поможет вам выяснить, чем занято место в конкретной папке или на всем разделе Linux. Команда универсальна, проста в использовании и есть в любых дистрибутивах Linux.
2-й способ. Утилита ncdu — анализ занятого места и его освобождение
Есть так же и другие способы определить чем занято место на диске, например, очень удобная в плане анализа занятого места — утилита ncdu. Установить ее можно, например, так:
- Для Debian систем (rpm-пакеты) (в т.ч. Ubuntu) командой apt-get install ncdu
- Для Red Hat систем (dpkg-пакеты) командой yum install ncdu
Дальше просто запустите ncdu и подождите, когда она подсчитает занимаемое место. По-умолчанию программа посчитает размеры папкой текущей папки, из которой программа была запущена. Если нужно посчитать какую-то другую папку, просто добавьте к команде путь к папке, например, так: ncdu /var/www. Если нужно посчитать занимаемое место на всем диске, можно использовать ncdu /.
Программа показывает занимаемое папками место, позволяет заходить в них и сразу видеть сколько подпапки занимают места. Так же в этой утилите можно выполнять различные действия над файлами и папками. Получить справку по клавишам управления можно нажав «?«. Ниже приведу список некоторых из клавиш управления:
- d — удалить выбранный файл или папку с файлами;
- n — отсортировать файлы и папки по имени;
- s — отсортировать файлы и папки по объему занимаемого места;
- t — показывать сначала папки, затем файлы;
- g — режим отображения (в процентах, графически, комплексно);
- a — режим отображения (размер файла, занятое место на жестком диске)
- e — включить/отключить отображение скрытых файлов;
- i — показать дополнительную информацию о папке или файле;
- r — заново пересчитать занимаемое место;
- q — выйти из программы;
Программа очень удобная, простая и выполняет задачу по анализу и освобождению свободного места полностью, рекомендую ее к использованию.
3-й способ. Графические утилиты.
Есть большое количество графических программ, которые позволяют делать примерно то же, что ncdu, только в графике. В Ubuntu, например, есть графическая программа, которая находится в Приложения > Системные утилиты > Анализатор использования диска. Кроме того, есть много и других программ. Приведу небольшой список, чтобы вы могли их попробовать и выбрать, какая больше нравится:
- В системах с Gnome обычно есть утилита Baobab, которая графически покажет занимаемое папками место, так же выводит диаграмму;
- Утилита KDirStat для KDE (WinDirStat для Windows) — в отличие от Baobab показывает вместо диаграммы прямоугольники, размер которых соответствует занимаемому папками пространства;
- Gd Map — аналог KDirStat для Gnome;
- Filelight и Philesight — аналоги Baobab (показывает папки в виде диаграммы).
Вот пожалуй, основной набор способов определения занятого места на дисках Linux. Можно конечно найти еще множество других способов, здесь я привел самые основные и распространенные.