Короткий ответ
df показывает использование места на уровне смонтированных файловых систем (разделов), а du считает фактический размер файлов и каталогов рекурсивно; для поиска «тяжёлых» каталогов используют du, для общей картины по разделам — df.
Как это работает подробнее
df читает статистику напрямую из суперблока файловой системы, поэтому работает мгновенно даже на больших дисках; du обходит дерево каталогов и суммирует размеры файлов, поэтому может быть медленным на файловых системах с миллионами файлов.
Пример кода
commands.sh
df -h
du -h --max-depth=1 /var | sort -hЧто использовать на практике
- Практика. для поиска самых больших каталогов используют du с сортировкой по глубине (du -h --max-depth=1 | sort -h), последовательно спускаясь в самый тяжёлый подкаталог; df -h используют для первичной диагностики «кончилось место».
Подводные камни
- Риск. Частая ошибка — делать du / по всей файловой системе без ограничения глубины на проде: это создаёт избыточную нагрузку на диск и может занять очень долгое время на сетевых или сильно фрагментированных ФС.