Битлента
Windows, macOS, Android, iOS6 мин чтения·

df -h и du в Linux: как найти, что занимает место на диске Ubuntu или Debian

Как в Ubuntu и Debian посмотреть заполнение разделов через df -h, найти крупные каталоги через du и понять, почему df и du показывают разные цифры.

Кратко

df -h показывает занятость разделов целиком, du -h --max-depth=1 помогает спуститься по каталогам и найти крупные. Расхождения между ними обычно объясняются открытыми удалёнными файлами, резервом ext4 и другими точками монтирования.

Сначала раздел, потом каталог: два разных вопроса

Когда система сообщает, что на диске не осталось места, полезно развести два вопроса. Первый: какой именно раздел заполнен. Второй: что внутри этого раздела занимает больше всего. На первый отвечает df, на второй du. Если сразу запустить du по всему корню, команда будет долго читать каталоги, заходить в чужие точки монтирования и в итоге выдаст цифры, по которым трудно понять картину.

Команда df -h выводит таблицу по смонтированным файловым системам: размер, занято, доступно, процент и точку монтирования. Ключ -h переводит байты в привычные единицы. Для домашнего компьютера обычно интересны строки с корнем / и, если домашний каталог вынесен отдельно, с /home. Строки tmpfs относятся к временным файловым системам в оперативной памяти, а строки с путями /snap/... и типом squashfs показывают смонтированные образы snap-пакетов: они обычно выглядят заполненными на 100%, это нормально для образов только для чтения.

Полезны два варианта запуска. df -h / сразу покажет раздел, на котором лежит корень. df -hT добавит столбец с типом файловой системы, что помогает отличить ext4 от tmpfs или от сетевых ресурсов. Как разделы выглядят на уровне устройств, показывает lsblk, он разобран в отдельной странице про разделы диска.

du: спуск по каталогам шаг за шагом

Команда du считает размер файлов внутри каталога. Для поиска крупных папок удобен приём с ограничением глубины: вывод получается коротким, и его легко отсортировать. Типичный вариант на Ubuntu и Debian:

  • du -h --max-depth=1 /var | sort -h — размеры подкаталогов /var по возрастанию;
  • du -xh --max-depth=1 / | sort -h — то же для корня, ключ -x не даёт заходить на другие файловые системы;
  • du -sh ~/.cache — общий размер одного каталога;
  • sudo du -xh --max-depth=1 /var/log | sort -h — каталоги, часть которых недоступна обычному пользователю.

Найдя крупный подкаталог, повторите команду уже для него и спускайтесь дальше. Если хочется интерактивного просмотра, в репозиториях есть пакет ncdu: он показывает дерево каталогов с сортировкой и позволяет удалять объекты прямо из интерфейса, но удалять стоит только то, что вы точно узнали.

Сообщения вида «Отказано в доступе» при запуске без sudo не означают ошибку: du просто не смог прочитать часть каталогов и не посчитал их, поэтому итог занижен.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Типичные крупные места в домашней системе

Ниже список мест, где чаще всего накапливается объём на настольной Ubuntu или Debian. Это ориентир для проверки, а не перечень того, что можно удалять.

КаталогЧто там лежитМожно ли чистить
/var/cache/aptскачанные пакеты .debда, командой apt clean
/var/log и /var/log/journalтекстовые логи и журнал systemdчерез ротацию и vacuum, не руками
~/.cacheкэши браузера и приложенийв большинстве случаев безопасно, приложения пересоздадут
~/.local/share/Trashкорзинада, если файлы больше не нужны
/var/lib/snapd и ~/snapsnap-пакеты и их данныечерез команды snap
~/.var/appданные Flatpak-приложенийчерез Flatpak, с оглядкой на настройки
/var/lib/dockerобразы контейнеров, если Docker установленсредствами самого Docker

Каждая строка таблицы — отдельная тема. Кэш пакетов и журнал systemd разобраны в соседних страницах, а snap и Flatpak тоже имеют собственные механизмы очистки. Удалять файлы из /var/lib вручную не стоит: там хранится состояние системы, и пакетный менеджер потом может работать некорректно.

Почему df и du показывают разные цифры

Расхождение между df и du встречается часто и, как правило, имеет понятную причину. Работают они по-разному: df спрашивает у файловой системы, сколько блоков занято, а du просматривает видимые файлы и суммирует их размеры.

Наиболее частые причины такие:

  1. Файл удалили, но процесс всё ещё держит его открытым. Место освободится только после закрытия файла. Найти такие файлы можно командой sudo lsof +L1, а затем перезапустить соответствующую программу или службу.
  2. На ext4 по умолчанию часть блоков зарезервирована для root. Поэтому «Доступно» меньше, чем разница между размером и занятым. Резерв настраивается при создании файловой системы и через tune2fs, но на домашнем компьютере менять его обычно нет причин.
  3. du запущен не от root и не прочитал часть каталогов.
  4. Другая файловая система смонтирована поверх каталога с файлами: данные под точкой монтирования du не видит, а df считает.
  5. Закончились inode, а не байты. Это проверяется командой df -i: при стопроцентном заполнении inode новые файлы создавать нельзя, хотя места по df -h достаточно.

Если ни одна причина не подходит, посмотрите, не лежат ли данные в снимках файловой системы или в подключённых образах.

Порядок действий, когда место закончилось

Если система почти перестала работать, действуйте от безопасного к рискованному. Сначала узнайте раздел через df -h, затем найдите крупные каталоги через du. Начинайте с того, что пересоздаётся само: корзина, кэш пакетов, кэш приложений. Потом разберитесь с журналом и старыми версиями snap. Личные файлы вроде видео и архивов решайте перенести на другой диск, а не удалять наугад.

Перед удалением чего-либо вне корзины проверяйте путь глазами. Команда sudo rm -rf с ошибкой в пути способна стереть системные файлы без возможности возврата. Если сомневаетесь в команде, сначала запустите только du без удаления и проверьте, что путь указывает на нужное место.

Если раздел переполняется регулярно, возможно, ему просто мало размера. Тогда вопрос уже не в очистке, а в планировании: перенос /home на отдельный диск или расширение раздела. Для таких задач нужны резервные копии, и делать их стоит заранее.

Для повторяющихся задач полезно собрать себе небольшую шпаргалку из двух-трёх команд и запускать её время от времени. Например, df -h для общей картины, du -xh --max-depth=1 ~ | sort -h для домашнего каталога и df -i, если возникают странные ошибки при создании файлов. Если вы заметили, что объём растёт быстро, повторите замер через сутки и сравните значения: так видно, какой каталог растёт и какая программа в этом участвует.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
linuxubuntudebianдискdfdu

Часто задаваемые вопросы

Читайте также