Как проверить и проанализировать использование диска в Linux с помощью df и du
TL;DR
- Быстрый способ увидеть занятое и доступное место — команда df. Чтобы понять, какие папки занимают место, используйте du.
- df показывает статистику по файловым системам. du показывает размеры каталогов и подпапок.
- Комбинации опций -h, -B, -T, -x, –total и –output для df и -h, -s, -B, –max-depth для du позволяют гибко фильтровать и форматировать вывод.

Этот подробный гид объясняет, как быстро определить, сколько места занято, где находятся «тяжёлые» каталоги и что делать дальше. Примеры ориентированы на Bash в Linux, но команды работают и в macOS и других Unix-подобных системах.
Коротко о терминах
- Файловая система — способ организации файлов на разделе диска. Примеры: ext4, xfs, btrfs, squashfs.
- inode — структура метаданных файла (имя, права, время, указатели на данные). Количество inode ограничено для каждой ФС.
- Монтаж — точка в дереве каталогов, куда «подсоединён» раздел или виртуальная ФС.
Важно: не удаляйте файлы, не сделав резервную копию важных данных. Перед очисткой проверьте, что файлы действительно вам не нужны.
Просмотр общего, доступного и занятого места: команда df
Команда df показывает сводную информацию по смонтированным файловым системам. Самый простой вызов:
dfВывод состоит из строк с колонками: source (имя устройства или тома), 1K-blocks (объём в блоках по 1К), Used, Available, Use% и Mounted on (точка монтирования).
Чтобы увидеть вывод удобочитаемым, используйте опцию -h (human readable):
df -h
Если нужен фиксированный масштаб, применяйте -B с буквой (K, M, G и т. д.). Пример для мегабайт:
df -BM
Для просмотра количества inode используйте -i:
df -i
Фильтрация по типу файловой системы
Иногда вывод захламлён псевдо-FS, например squashfs, loop или tmpfs. Сначала узнайте типы с -T:
df -T
Чтобы исключить тип, используйте -x:
df -x squashfsА чтобы показать только тип ext4:
df -t ext4Объединённый итог и выбор колонок
Чтобы получить суммарные значения, добавьте –total:
df -x squashfs --totalМожно указать, какие колонки выводить, через –output. Например, интересуют source, fstype, size, used, avail, pcent:
df -h /dev/sda1 --output=source,fstype,size,used,avail,pcentЕсли нужна вся возможная информация, используйте -a –output без списка колонок:
df -a --outputА для удобного просмотра больших таблиц направьте вывод в less:
df -a --output | lessПолезные трюки и сохранение алиаса
Длинные команды удобно сохранять в алиасах. Пример:
alias dfc="df -h /dev/sda1 --output=source,fstype,size,used,avail,pcent"Чтобы алиас сохранился между сессиями, добавьте строку в ~/.bashrc или ~/.bash_aliases.
Примечание: если вы работаете через ssh и у вас разные машины, убедитесь, что алиас определён на каждой машине, где он нужен.
Что занимает место: команда du
Команда du показывает размер каталогов и подпапок. Базовый вызов выводит рекурсивный список:
duВы увидите строки вида: объём (в 1K блоках) и путь каталога.
Используйте -h для удобочитаемого вывода и -s для суммарного размера каталога без показа вложенных:
du -h -s *
Чтобы получить список подкаталогов в мегабайтах и отсортировать по убыванию:
du -sm Pictures/* | sort -nr
Ограничение глубины и исключение других ФС
- –max-depth=N ограничивает глубину обхода. Полезно, чтобы увидеть только верхние уровни каталога.
- -x запрещает переходить на другие монтированные файловые системы.
Примеры:
# Показать размер каталога /var и только первого уровня вложения
du -h --max-depth=1 /var
# Посчитать размер текущей ФС, не заходя в другие точки монтирования
du -xh --max-depth=2 /Быстро найти топ-10 «тяжёлых» директорий
du -xh / | sort -hr | head -n 20Обратите внимание: этот запуск покажет все точки монтирования. Если вам нужно ограничиться одной ФС, используйте -x.
Пошаговый план: как найти и безопасно освободить место (мини-методология)
- Сначала выясните общую картину:
- df -h –total
- Определите ФС и точки монтирования, где много занято:
- df -hT
- Для каждой критичной точки монтирования выполните du с подходящими опциями:
- du -xh –max-depth=1 /path
- Для глубокого поиска топ-10 каталогов используйте:
- du -xh /path | sort -hr | head -n 20
- Проверьте открытые и удалённые файлы (частая причина «невидимого» занятого места):
- lsof +L1
- Очистите безопасно:
- Удалите временные/кэш файлы (apt, package cache, tmp).
- Архивируйте старые логи и переместите на внешний диск.
- Для журнальных файлов systemd используйте: journalctl –vacuum-size=200M
- Повторите df, чтобы убедиться в освобождении места.
Пример runbook (шаги для экстренной очистки)
- Примечание: выполняйте под sudo или root, когда это необходимо.
- Проверка дискового пространства:
df -h- Найти большие каталоги в корне:
du -xh --max-depth=1 / | sort -hr- Если /var/log растёт, просмотрите самые большие файлы:
ls -lhS /var/log | head -n 20- Очистка apt cache (Debian/Ubuntu):
apt-get clean- Сжать или архивировать старые логи:
cd /var/log
tar -czf /root/logs-archive-$(date +%F).tar.gz *.log --remove-files- Если найден открытый, но удалённый файл, освободите место перезапуском сервиса или kill процесса, держащего дескриптор:
lsof +L1
# затем kill или перезапустить службу systemctl restart <служба> - Проверка результата:
df -hВажно: не удаляйте системные файлы без понимания последствий. Всегда делайте резервные копии критичных данных.
Инструменты-альтернативы и графические утилиты
- ncdu — консольный интерактивный анализатор директории. Очень удобен для быстрого поиска больших каталогов.
- baobab (Disk Usage Analyzer) — GUI для GNOME.
- duff, fdupes — поиск дубликатов файлов.
- rsync — перенос больших наборов данных на другой диск.
- find — для выборочного удаления по дате/размеру.
Пример использования ncdu:
ncdu /ncdu интерактивно позволяет переходить по каталогам и удалять элементы прямо из интерфейса.
Когда df и du могут вводить в заблуждение — распространённые случаи
- Удалённые, но всё ещё открытые файлы — процесс держит дескриптор. Файл исчезает из дерева, но место остаётся занятым пока процесс не завершится. lsof +L1 помогает обнаружить такие случаи.
- Sparse-файлы и тонкие тома (sparse files, sparse allocation) — du может показывать «логический» размер, df — «физический» займ. Для точной информации используйте ls -s и stat.
- Overlay/union/containers (overlayfs, aufs) — файлы внутри контейнера могут не отображаться ожидаемо внешними инструментами.
- Разные точки монтирования — если /home смонтирован отдельно, du / покажет не содержимое /home без опции -x.
- Журналы systemd могут расти до внезапно большого размера; используйте journalctl –vacuum-size.
Сниппеты и готовые команды (cheat sheet)
- Показать все ФС с типами и в удобном виде:
df -hT- Топ-20 больших файлов/папок в корне ФС:
du -xh / | sort -hr | head -n 20- Найти большие файлы в системе (по размеру):
find / -xdev -type f -size +100M -exec ls -lh {} \; | awk '{ print $5 " " $9 }'- Проверить, какие процессы держат удалённые файлы:
lsof +L1- Очистить apt-кэш (Debian/Ubuntu):
apt-get clean- Очистить место journalctl до 200M:
journalctl --vacuum-size=200MСкрипт: отчёт по диску и 10 топ-папок (пример автоматизации)
#!/bin/bash
# disk-report.sh
echo "Disk usage summary:"
df -h --total | grep total || df -h --total
echo "\nTop 10 directories by size (from /):"
du -xh / | sort -hr | head -n 10
# Save report
REPORT_DIR=/var/tmp/disk-reports
mkdir -p "$REPORT_DIR"
OUT=$REPORT_DIR/report-$(date +%F-%H%M%S).txt
{
df -h --total
echo "\nTop 20 directories:"
du -xh / | sort -hr | head -n 20
} > "$OUT"
echo "Report saved to $OUT"Поставьте этот скрипт в cron или systemd timer, если вам нужны регулярные отчёты.
Ролевые чеклисты
Администратор:
- Проверить df -hT и определить перегруженные ФС.
- Выполнить du -xh –max-depth=1 для критичных точек монтирования.
- Найти открытые удалённые файлы через lsof +L1.
- Архивировать старые логи и настроить ротацию logrotate.
- Убедиться, что бэкапы доступны перед удалением.
Обычный пользователь:
- Проверить домашнюю папку du -h -s ~/*.
- Очистить кэш приложений и старые загрузки.
- Перенести большие мультимедиа на внешний диск или облако.
Пример критериев приёмки после очистки
- Свободное место в целевой ФС увеличилось на ожидаемую величину.
- Критические сервисы запущены и работают корректно.
- Нет ошибок в системных журналах, связанных с удалёнными файлами или правами.
Краткий глоссарий (1 строка каждый)
- df — утилита для просмотра занятости файловых систем.
- du — утилита для оценки размеров каталогов.
- inode — запись файловой системы с метаданными файла.
- mount — присоединение раздела к дереву каталогов.
Примеры визуальных сценариев (Mermaid — решение для выбора действия)
flowchart TD
A[Диск заполнен] --> B{Где занято?}
B -->|Файловая система| C[df -hT]
B -->|Каталоги| D[du -xh --max-depth=1]
C --> E{ФС отдельные?}
E -->|Да| D
E -->|Нет| F[lsof +L1]
D --> G{Найдены большие каталоги}
G -->|Логи| H[Архивировать и ротировать]
G -->|Кэш| I[Очистить кэш приложений]
G -->|Пользовательские данные| J[Перенести/удалить/архивировать]Советы по безопасности и приватности
- При архивации используйте шифрование, если переносите данные на внешние носители или в облако.
- Перед удалением логов убедитесь, что они не нужны для расследования инцидентов.
- Если система под управлением GDPR/локальных правил хранения данных, проверьте сроки хранения и процедуры удаления.
Заключение
Команды df и du — базовый и мощный инструмент для оценки использования диска. Небольшие комбинации опций и простые пайплайны позволяют быстро локализовать «тяжёлые» каталоги и принять решение: очистить, перенести или добавить хранилище. Для интерактивного анализа используйте ncdu. Всегда выполняйте операции с файлами аккуратно: проверяйте открытые дескрипторы, делайте резервные копии и контролируйте права.
| | Linux Commands | | Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr | | | Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | | | Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld | |
Похожие материалы
Анимация круговой диаграммы в PowerPoint
Астропрофиль в Snapchat — как создать
Отключить автоповорот экрана в Windows 8
Как подготовиться к краже Android‑телефона
Поделиться твитом в Snapchat — стикер истории