duf — удобная утилита для анализа использования диска в Linux
duf — это современная командная утилита для просмотра использования дискового пространства и свободного места в Linux. Она сочетает в себе преимущества классических df и du, добавляет фильтрацию, сортировку и экспорт в JSON, и при этом даёт читабельный цветной вывод прямо в терминале.
Что такое duf
duf, сокращение от Disk Usage/Free, — свободная утилита с открытым исходным кодом. Она предназначена для быстрой проверки точек монтирования, устройств и общего распределения свободного и занятого пространства. По сути duf объединяет возможности df и отдельных отчётов du в одной команде и оформляет вывод в удобную табличную форму.
Ключевая идея
- Просмотр свободного и занятого места в понятном виде.
- Фильтрация и сортировка прямо из команды.
- Экспорт в JSON для автоматизации и интеграции.
Важно
duf не изменяет файловую систему. Это инструмент только для чтения состояния дисков.
Зачем использовать duf
Основные преимущества duf перед df и простыми подсчётами du:
- Цветной и понятный вывод. Таблицы читаются быстрее.
- Настраиваемая тема и терминальный стиль.
- Фильтрация по типам таблиц, файловым системам и точкам монтирования.
- Сортировка по любым колонкам; можно выбирать видимые столбцы.
- Экспорт результата в JSON для интеграции с мониторингом или скриптами.
Когда duf особенно полезен
- Быстрая диагностика на сервере при нехватке места.
- Единообразный вывод для скриптов и отчётов.
- Для новых пользователей Linux, которым удобнее видеть таблицы, чем строки df.
Как установить duf на Linux
Ниже описаны распространённые способы установки. Выберите тот, который удобен для вашей системы.
Установка из DEB или RPM пакета
Разработчики публикуют готовые пакеты в разделе Releases на GitHub. Выберите файл с расширением .deb для Debian/Ubuntu и производных, или .rpm для RHEL, Fedora, CentOS и их производных.
Если вы предпочитаете скачивать через терминал, проверьте наличие wget:
wget --versionЕсли wget отсутствует, установите его через пакетный менеджер вашей системы.
Пример загрузки пакета для Debian-подобных систем:
wget https://github.com/muesli/duf/releases/download/v0.6.2/duf_0.6.2_linux_amd64.debДля RHEL-подобных систем:
wget https://github.com/muesli/duf/releases/download/v0.6.2/duf_0.6.2_linux_amd64.rpmУстановка из каталога Загрузок через графический установщик также возможна. В графическом окружении щёлкните по файлу и выберите систему установки пакета.
Установка через CLI для Debian-подобных:
sudo dpkg -i duf_0.x.x_linux_amd64.debДля RHEL-подобных:
sudo rpm -i duf_0.x.x_linux_amd64.rpmПользователи Arch Linux могут установить через AUR с помощью помощника, например:
yay -S dufУстановка через snap
Если у вас установлен snap, можно поставить официальный snap-пакет:
sudo snap install duf-utilityПроверьте работу snap с помощью:
snap --versionСборка из исходников
duf написан на Go. Если вы хотите собрать утилиту самостоятельно, убедитесь, что у вас установлен Go и настроено окружение GOPATH. Команды для сборки:
git clone https://github.com/muesli/duf.git
cd duf
go buildПосле сборки вы получите исполняемый файл в текущем каталоге; переместите его в каталог из PATH, например /usr/local/bin.
Быстрый старт. Как использовать duf
После установки запустите в терминале:
dufКоманда выведет список устройств и точек монтирования с колонками типа SIZE, USED, AVAIL, USE% и т.д.
Ограничение вывода на конкретные точки монтирования
Чтобы показать информацию только для корня и домашней директории:
duf /
duf /homeЧтобы показать все файловые системы, включая псевдо и недоступные:
duf --allФильтрация по таблицам, файловым системам и точкам монтирования
duf поддерживает фильтры типа –only и –hide для таблиц, а также –only-fs, –hide-fs, –only-mp, –hide-mp.
Показать только локальные и сетевые устройства:
duf --only local,networkСкрыть локальные и сетевые устройства:
duf --hide local,networkПоказать только конкретные типы файловых систем:
duf --only-fs tmpfs,vfatСкрыть определённые файловые системы:
duf --hide-fs tmpfs,vfatПоказать только точки монтирования / и /home:
duf --only-mp /,/homeСкрыть эти точки монтирования:
duf --hide-mp /,/homeСортировка и выбор колонок
Можно сортировать по колонкам, например по размеру:
duf --sort sizeПоказать только конкретные столбцы, например SIZE и AVAIL:
duf --output size,availПросмотр информации об inode
По умолчанию duf показывает блоки. Чтобы увидеть использование inode-ов, используйте:
duf --inodesЭкспорт в JSON
Экспорт пригодится для интеграции с системами мониторинга или для автоматизированных отчётов. Чтобы получить JSON, выполните:
duf --jsonВывод можно перенаправить в файл:
duf --json > /tmp/duf-report.jsonТема терминала
duf обычно автоматически подбирает тему. Если определение не сработало, принудительно задайте светлую или тёмную тему:
duf --theme light
duf --theme darkПомощь по команде
Если нужно узнать доступные опции, выполните:
duf --helpПрактические примеры использования
Пример 1. Быстрая проверка состояния перед резервным копированием:
duf --only local --output size,used,avail,mountpointПример 2. Сравнение разных файловых систем и экспорт для отчёта:
duf --only-fs ext4,xfs --json > report.jsonПример 3. Автоматическая тревога в скрипте при заполнении больше 90%:
if [ "$(duf --json | jq '.[] | select(.use_percent >= 90)')" ]; then
echo 'Внимание: заполнение диска больше 90%'
# Дополнительные действия: очистка, оповещение, ротация логов
fiСовет
Используйте jq для парсинга JSON, полученного от duf, и интеграции в цепочки обработки.
Чек-листы ролей
Системный администратор
- Проверить точки монтирования на всех критических серверах.
- Собрать JSON-отчёты и загрузить в систему мониторинга.
- Настроить оповещения при заполнении выше порога.
Разработчик
- Перед деплоем проверить свободное место в каталогах, где будут размещены артефакты.
- Использовать duf в CI-пайплайне для валидации свободного места.
Десктоп-пользователь
- Визуально оценить, какие разделы заполнены.
- Найти большие точки монтирования и удалить лишние файлы.
Критерии приёмки
Если вы интегрируете duf в процесс автоматизации, убедитесь, что:
- duf установлен на целевых серверах и доступен в PATH.
- JSON-вывод корректно парсится и не содержит ошибок.
- Скрипты обработали случаи отсутствия команд и возвращают понятные коды ошибок.
- Порог заполнения и действия при срабатывании задокументированы.
Runbook при проблеме с заполнением диска
- Оповещение: получать json-отчёт от duf с отметкой точки монтирования.
- Первичная диагностика:
duf --only-mp /var --output size,used,avail,mountpoint --json > /tmp/var.json
jq . /tmp/var.json- Скорое решение: освободить место в логах, очистить временные каталоги или удалить старые резервные копии.
- Продолжение: запланировать аудит и добавить периодические проверки.
- Откатные действия: если автоматическая очистка привела к проблемам, восстановить из бэкапа.
Когда duf не подходит
- При необходимости анализа содержимого каталогов на уровне файлов и подпапок лучше подойдёт ncdu.
- Для низкоуровневого восстановления или исправления метаданных используйте специализированные утилиты для конкретной файловой системы.
- Если доступ невозможен или файловая система повреждена, duf покажет ограниченную информацию.
Альтернативы и сравнение
Короткое сравнение инструментов:
- df — стандартный инструмент, показывающий файловые системы, прост в использовании.
- du — оценивает размер директорий; полезен для поиска «тяжёлых» каталогов.
- ncdu — интерактивный TUI для исследования использования по каталогам.
- lsblk — для детального просмотра блоковых устройств и их связей.
- gdu — быстрый аналог du на Go с удобным интерфейсом.
Матрица сравнения
- Читаемость: duf > df
- Гибкость фильтров: duf > df
- Интерактивный анализ папок: ncdu > duf
- Экспорт для автоматизации: duf имеет преимущество
Ментальные модели и полезные понятия
- Блоки и inode: блоки хранят данные, inode содержат метаданные про файлы.
- Таблицы: duf группирует устройства по таблицам вроде local, network, loopback.
- Точки монтирования: область, где файловая система становится видимой в дереве каталогов.
Короткий словарь
- inode — структура, описывающая файл.
- mount point — точка монтирования, где доступна файловая система.
- filesystem — тип файловой системы, например ext4, xfs, vfat.
Мини-методология для регулярных проверок
- Добавьте ежедневный cron или systemd timer, который собирает duf –json.
- Парсите JSON с помощью jq или любым способом в систему мониторинга.
- Задайте оповещения по порогам использования и по inode.
- Проводите ежемесячный аудит больших каталогов с помощью ncdu.
Пример systemd timer
# /etc/systemd/system/duf-report.service
[Unit]
Description=Generate duf JSON report
[Service]
Type=oneshot
ExecStart=/usr/local/bin/duf --json > /var/log/duf/report-$(date +%F).json# /etc/systemd/system/duf-report.timer
[Unit]
Description=Daily duf report
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.targetБезопасность и конфиденциальность
- duf сам по себе читает только информацию о точках монтирования и использовании.
- Выгрузка в JSON может содержать имена точек монтирования — аккуратно храните такие отчёты.
- Не публикуйте отчёты, которые раскрывают структуру серверов без необходимости.
Миграция и совместимость
- Версии пакетов отличаются лишь в бинарных релизах. При обновлении проверяйте суммарное поведение CLI в CI.
- При переходе с df/du на duf убедитесь, что парсеры ожидают новые форматы; используйте –json для стабильного интеграционного формата.
Часто задаваемые вопросы
Как узнать версию duf
duf --versionМожно ли запускать duf без прав root
Да. duf читает пользовательскую информацию о файловых системах. В некоторых случаях для доступа к определённой информации могут потребоваться права root.
Подходит ли duf для автоматизации в CI
Да. Используйте duf –json и парсинг с помощью jq для встраивания в пайплайны.
Как увидеть только смонтированные сетевые файловые системы
duf --only networkПримеры команд-шаблонов
Чек-лист команд для быстрого копирования:
- Проверить все устройства в удобном виде:
duf --all- Экспорт для мониторинга:
duf --json > /tmp/duf.json- Показать только раздел с логами:
duf --only-mp /var --output size,used,avail- Показать использование inode:
duf --inodesDecision tree для выбора инструмента
flowchart TD
A[Нужно посмотреть дисковое пространство?] --> B{Нужен обзор или детальный анализ}
B -- обзор --> C[Использовать duf]
B -- детальный анализ --> D{По каталогам или по файловой системе}
D -- по каталогам --> E[Использовать ncdu]
D -- по ФС --> F[Использовать du или gdu]
C --> G[Экспорт в JSON для мониторинга]Резюме
duf упрощает повседневный мониторинг дискового пространства. Он сочетает читабельный вывод, гибкие фильтры и экспорт в JSON. Для большинства задач по быстрой диагностике и интеграции с мониторингом duf удобнее, чем набор классических команд.
Важно
Если вам нужен интерактивный разбор каталогов, дополните duf утилитой ncdu. Для автоматизации используйте duf –json.
Похожие материалы
Отключить автовход в Windows 10/11
Sentry и GitLab для React: настройка и практика
Exim: направить входящую почту в скрипт
Удаление Git или смена удалённого репозитория
Автообновление страниц в браузере — расширения и советы