duc — это не просто ещё одна утилита для подсчёта занятого места. Это полноценный анализатор дискового пространства Linux и Unix-подобных систем, который сначала строит индекс файловой системы, а потом уже работает с этой базой быстро, без повторного тяжёлого прохода по дереву каталогов при каждом запросе. Именно поэтому duc особенно хорош там, где обычный однократный запуск du или даже интерактивного анализатора уже начинает тормозить: на серверах, NAS, больших домашних архивах, каталогах с тысячами и миллионами файлов, а также в ситуациях, когда разбирать занятие диска приходится регулярно, а не разово.

Главная идея duc очень практичная. Программа не пытается каждый раз заново сканировать весь диск в момент, когда вы хотите посмотреть результат. Она разделяет работу на два этапа: сначала duc index строит базу размеров, затем остальные режимы — duc info, duc ls, duc ui, duc gui, duc graph, duc cgi, duc json и duc xml — используют уже готовый индекс. За счёт этого duc ощущается как быстрый инструмент для повседневного аудита хранилища, а не как утилита, которую запускают и потом ждут, пока она снова пройдёт по всему дереву каталогов.

У duc есть ещё одно сильное качество: это не узкий single-purpose инструмент только для терминала или только для графики. В одном пакете сочетаются текстовый вывод, ncurses-интерфейс, графический sunburst, экспорт графиков в файлы, web/CGI-доступ и выгрузка данных в JSON/XML. В реальной работе это удобно: один и тот же индекс можно использовать и в консоли, и для визуального анализа, и для отчётов, и для лёгкой автоматизации.

Скачать duc

Оценка 9.7 Рекомендуем
  • Оптимизация системы
  • Очистка мусора
  • Ускорение ПК
Скачать бесплатно на Windows
Лучшая альтернатива
duc
Оценка 8.3
  • Командная строка
  • Сложно новичкам
  • Нет GUI-интерфейса
Скачать duc
Загрузка начнётся после нажатия

Зачем вообще нужен duc, если есть du, ncdu и другие утилиты

Если формулировать совсем прямо, duc нужен тогда, когда вы хотите не просто один раз узнать размер каталога, а получить нормальный рабочий инструмент для анализа использования диска. du выдаёт голые цифры. Обычные однопроходные анализаторы сканируют дерево заново. duc работает иначе: он хранит накопленные размеры каталогов в собственной базе и позволяет потом быстро переключаться между режимами просмотра. В результате вы получаете не просто разовый ответ на вопрос что занимает место, а устойчивый рабочий процесс: проиндексировал, посмотрел списком, ушёл в ncurses, затем при необходимости построил график или отдал данные в web-интерфейс.

На практике duc особенно полезен в нескольких сценариях:

  • когда на сервере нужно регулярно искать тяжёлые каталоги;

  • когда на NAS или файловом архиве слишком много мелких файлов, и повторный полный обход дерева дорог по времени;

  • когда нужно быстро показывать структуру занятого места не только себе, но и коллегам;

  • когда хочется совмещать CLI, TUI, графику и экспорт в одном инструменте;

  • когда важна визуализация дискового пространства, но без отказа от терминальной работы.

duc особенно хорош не как магическая кнопка очистки, а как инструмент понимания структуры хранилища. Он не делает за пользователя автоматическую уборку, но отлично отвечает на более важный вопрос: какая именно часть дерева каталогов съедает место, насколько глубоко проблема уходит вниз и как это выглядит в целом. В обзоре такого рода это важнее любой автооптимизации, потому что именно понимание структуры данных чаще всего экономит больше места, чем агрессивное удаление вслепую.

Как устроена работа в duc

Рабочая схема у duc простая и логичная:

  1. Выбираете каталог или файловую систему.

  2. Запускаете duc index.

  3. Получаете базу данных с накопленными размерами.

  4. Исследуете её любым удобным фронтендом.

Эта модель кажется чуть более администраторской, чем у совсем простых анализаторов, зато именно она делает duc сильным инструментом для повторного использования. Построенный индекс можно много раз открывать разными командами, не заставляя диск снова и снова проходить тот же путь.

По умолчанию база хранится в ~/.duc.db. При желании путь можно сменить либо через переменную окружения DUC_DATABASE, либо через аргумент --database. Это удобно в трёх случаях: когда нужно держать отдельные базы под разные деревья, когда индексация выполняется от имени другого пользователя, и когда одну и ту же машину приходится анализировать несколькими наборами правил.

Отдельно важно понимать, что доступность некоторых режимов зависит от сборки. Командный duc ls есть всегда, duc ui обычно включён, а duc gui может отсутствовать в облегчённых пакетах без графических зависимостей. При сборке из исходников интерфейсы тоже можно включать и отключать: ncurses, X11 GUI и OpenGL GUI настраиваются отдельно. Это не недостаток duc, а скорее нормальная модульность для Unix-утилиты, которая может жить и на headless-сервере, и на полноценной рабочей станции.

Установка и первый запуск

В большинстве Linux-систем duc ставится как обычный пакет. После установки первым делом стоит проверить состав доступных команд:

duc help

Эта команда показывает, какие подкоманды есть в конкретной сборке. Это полезно, потому что в серверной конфигурации может оказаться, что duc gui отсутствует, а в полной десктопной сборке доступны и ui, и gui, и генерация графики.

Для первичной проверки практичнее всего сразу посмотреть расширенную справку:

duc help --all

Так вы увидите не только список режимов, но и конкретные параметры вроде --one-file-system, --exclude, --progress, --levels, --palette, --tooltip, --css-url и других. В duc довольно много полезных флагов, и именно чтение полного списка заранее сильно сокращает число лишних повторных индексаций.

Что важно понимать до первого сканирования

Перед стартом не стоит индексировать без разбора весь корень системы только потому, что это можно сделать. По умолчанию duc проходит все каталоги, которые встречает во время обхода, включая специальные файловые системы вроде /proc и /sys, а также сетевые точки вроде NFS или Samba, если они примонтированы. Поэтому разумный запуск начинается не с просканирую всё подряд, а с осмысленного выбора области анализа и параметров исключения.

Если ваша задача — проанализировать домашний каталог, рабочее хранилище, раздел с медиаархивом или отдельную точку монтирования, лучше индексировать именно их. Такой подход делает базу меньше, ускоряет обновления и упрощает интерпретацию результата: в индексе остаётся только то, что действительно относится к вашей задаче.

Первая индексация: duc index

Команда duc index — это основа всего рабочего процесса. Она рекурсивно проходит заданные пути, считает инклюзивные размеры каталогов и записывает результат в индекс. Всё, что пользователь видит потом в info, ls, ui, gui, graph, cgi, json и xml, строится именно на данных этого этапа.

Самый простой запуск выглядит так:

duc index ~

Или для конкретного каталога:

duc index /srv/data

Если нужен анализ отдельного раздела, а не всей системы, это уже хороший старт. После завершения индексации duc покажет, сколько файлов и каталогов было обработано и какой общий объём оказался в индексе. Индексацию потом можно повторять в любое время, когда дерево каталогов изменилось и база требует обновления.

Наиболее полезные опции duc index

Ниже — те параметры, которые в реальной работе нужны чаще всего.

Опция Что делает Когда особенно полезна
--one-file-system не уходит на другие файловые системы чтобы не залезать в примонтированные тома
--exclude=PATTERN исключает файлы по шаблону для кэшей, временных данных, мусора
--fs-exclude=LIST исключает типы ФС чтобы не трогать proc, sysfs, сетевые ФС
--fs-include=LIST включает только заданные типы ФС когда нужен строго ограниченный набор
--hide-file-names скрывает имена файлов в индексе для приватных или отчуждаемых баз
--username=NAME / --uid=ID индексирует только объекты владельца для аудита места по конкретному пользователю
--max-depth=N сохраняет только первые уровни каталогов когда важен компактный индекс
--progress показывает прогресс для больших деревьев, чтобы видеть ход сканирования
--dry-run просто обходит дерево без записи в БД чтобы оценить поведение перед реальным запуском
--uncompressed отключает сжатие базы когда приоритет — скорость записи, а не размер индекса

Сами эти параметры делают duc действительно практичным инструментом, а не просто ещё одним просмотрщиком размеров. Здесь уже видно, что программа рассчитана и на личные каталоги, и на серверные деревья, и на приватные или многопользовательские сценарии.

Самые полезные варианты запуска

Для домашнего каталога:

duc index --progress --one-file-system ~

Это хороший базовый вариант, потому что он не уходит в чужие примонтированные тома и показывает ход сканирования. Для домашней машины или рабочей станции это часто лучший первый запуск.

Для серверного раздела с данными:

duc index --progress --one-file-system /srv/data

Такой запуск особенно удобен, когда нужно потом регулярно проверять, что разрастается внутри проекта, backup-дерева, логов или файлового архива. После первого прохода дальнейший анализ выполняется уже по индексу и ощущается намного быстрее.

Для анализа только конкретного пользователя:

duc index --username backup --progress /srv

Это сильный приём для многопользовательской системы. Когда нужно понять, сколько места реально заняли файлы отдельного сервисного аккаунта, параметр --username делает обзор сразу предметным.

Для приватного индекса без имён файлов:

duc index --hide-file-names --one-file-system /data

Такой вариант уместен, если база будет передаваться дальше, использоваться в отчётах или открываться там, где не хочется светить имена конкретных файлов. При этом структура директорий сохраняется, а значит, анализ всё равно остаётся полезным.

Для крупных обходов, чтобы не давить систему:

nice 19 ionice -c 3 duc index --progress /big-storage

Это очень здравый способ запускать индексацию на боевом сервере. Сама по себе индексация — тяжёлая работа, и duc это честно показывает. Но при низком CPU- и I/O-приоритете её можно запускать заметно мягче для остальных процессов.

Как duc ведёт себя на больших деревьях

Именно на больших деревьях становится понятно, почему duc вообще интересен. Пока сканирование идёт, программа делает тяжёлую работу по обходу файловой системы. Зато после завершения индекс уже хранит накопленные размеры, и дальше пользователь работает не с медленным живым деревом, а с базой. Для серверных каталогов, где одинаковые вопросы к диску возникают постоянно, это почти всегда удобнее, чем повторять одноразовый анализ каждый раз заново.

Иллюстрация текстового интерфейса duc

Ниже — типичный экран duc ui, где уже видно главное достоинство программы: очень быстрый переход по иерархии и мгновенная видимость самых тяжёлых каталогов.

Экран duc ui

Что делать сразу после индексации

После того как база создана, первые три команды, которые стоит запомнить, — это duc info, duc ls и duc ui.

duc info

duc info показывает список доступных деревьев в базе и время последнего сканирования. Это очень полезная команда, когда индексируете не один путь, а несколько: она позволяет быстро понять, какие наборы данных уже есть в БД, когда они обновлялись и с какой именно базой вы сейчас работаете.

Простой запуск:

duc info

Если база не по умолчанию, добавляется --database=/path/to/file.db. В реальной работе эта команда особенно удобна в cron-сценариях и на машинах, где хранятся отдельные индексы под разные роли: домашние данные, архивы, медиатека, проекты, резервные копии.

duc ls

duc ls — это быстрый консольный режим просмотра содержимого пути из индекса. Важный момент: он не повторяет файловый обход, а показывает уже рассчитанные накопленные размеры.

Базовый пример:

duc ls /srv/data

Если нужен наглядный графический столбик прямо в текстовом выводе:

duc ls -g /srv/data

Если хочется получить более похожее на каталог дерево:

duc ls -Rg /srv/data

У duc ls есть несколько действительно удачных опций:

  • -g, --graph — рисует относительный график размера для каждой строки;

  • -R, --recursive — рекурсивный вывод;

  • -F, --classify — добавляет индикаторы типа;

  • --dirs-only — оставляет только каталоги;

  • --full-path — показывает полный путь вместо древовидного сокращения;

  • -n, --name-sort — сортирует по имени вместо размера;

  • -D, --directory — выводит размер самой директории, а не её содержимое;

  • --count — переключает режим с размера на число файлов.

На практике duc ls хорош тогда, когда нужен быстрый полутекстовый отчёт без входа в ncurses. Например, для SSH-сессии этого уже часто достаточно: видно, что сверху тяжёлое, можно быстро углубиться в нужный путь, можно сравнить каталоги по размеру или по количеству файлов. Если же уже хочется интерактивной навигации и перемещения по дереву без повторных запусков команды, лучше сразу идти в duc ui.

Короткая памятка по повседневным командам

Задача Команда
показать наборы деревьев в базе duc info
вывести верхний уровень каталога duc ls /path
вывести список с полосами относительного размера duc ls -g /path
рекурсивно просмотреть каталог duc ls -Rg /path
перейти в ncurses-интерфейс duc ui /path
открыть sunburst GUI duc gui /path
сохранить график в файл duc graph -o report.png /path

Этот набор покрывает примерно 80% обычной работы с duc. Всё остальное — уже усиление под конкретные сценарии: web/CGI, экспорт, приватные индексы, фильтрация по владельцам, настройка внешнего вида графиков.

duc ui: лучший режим duc для сервера и терминала

Если выбирать один режим duc, который чаще всего оказывается самым полезным, это будет duc ui. Он запускает ncurses-интерфейс для исследования индексированного дерева каталогов. По ощущениям это режим, где duc раскрывается лучше всего: он быстрый, компактный, работает в терминале, а навигация по каталогу не заставляет перезапускать команды.

Запуск выглядит так:

duc ui /srv/data

Если путь не указан, используется текущий каталог. После открытия на экране сразу видно список каталогов и файлов с размерами, строку состояния и курсор, которым можно перемещаться по дереву. Для серверной работы по SSH это очень удачный формат: вся структура перед глазами, управление клавишами, нулевая зависимость от браузера или тяжёлой графической среды.

Клавиши duc ui, которые реально нужно запомнить

Навигация:

  • up, pgup, j — вверх;

  • down, pgdn, k — вниз;

  • home, 0 — к началу;

  • end, $ — в конец;

  • left, backspace — подняться к родительскому каталогу;

  • right, enter — зайти в выбранный каталог.

Переключатели режима отображения:

  • a — переключить actual/apparent size;

  • b — переключить точные байты и сокращённый размер;

  • c — показать не размер, а количество файлов;

  • n — сменить сортировку с размера на имя и обратно.

Сервисные действия:

  • h — открыть help;

  • o — попытаться открыть файл через xdg-open;

  • q или escape — выход.

Это очень удачный набор горячих клавиш. В duc нет ощущения перегруженности, но и нет ощущения урезанности. Интерфейс не навязывает мышь, не требует отдельной логики навигации и очень быстро становится мышечной памятью: вверх-вниз, Enter внутрь, Backspace назад, n для сортировки, a для режима размеров, c для переключения на количество файлов.

Как duc ui работает в реальной задаче

Представим обычную ситуацию: заканчивается место на разделе с проектами. Вы открываете:

duc ui /srv/projects

Сразу видно верхний уровень каталогов и их размеры. Самый тяжёлый каталог обычно уже наверху. Нажимаете Enter, спускаетесь глубже, снова видите тяжёлые подкаталоги, переключаете n, если хотите посмотреть по имени, затем c, если интересует не суммарный объём, а число файлов. Если замечаете каталог, который содержит подозрительно много мелочёвки, переключение в режим подсчёта файлов очень быстро показывает, в каком именно месте дерево распухло количественно, а не только по объёму.

Особенно хорош duc ui там, где нужно не просто найти самый большой каталог, а разобраться в структуре разрастания. Например, каталог логов может не быть крупнейшим на верхнем уровне, но внутри него окажется один сервис с огромным числом мелких ротаций, а каталог кэша сборки — наоборот, будет состоять из сравнительно небольшого числа очень тяжёлых объектов. В duc ui это видно быстрее, чем в голом текстовом списке.

Почему duc ui часто выигрывает у обычного duc ls

duc ls хорош как быстрый срез. Но когда вы начинаете спускаться по дереву глубже двух-трёх уровней, перезапускать команды становится менее удобно, чем просто ходить курсором в интерактивном режиме. Поэтому здесь вывод простой: duc ls — это отличный отчётный или быстрый диагностический режим, а duc ui — основной рабочий режим для живого исследования диска в терминале.

duc gui: графическая sunburst-навигация по диску

Графический режим duc gui — это уже другая сторона программы. Если duc ui рассчитан на быструю терминальную навигацию, то duc gui показывает дисковое пространство как sunburst-граф: концентрические кольца, где каждый сектор соответствует каталогу или файлу, а размеры секторов отражают занимаемое место.

Запуск:

duc gui /usr

Если путь не указан, анализ начинается с текущего каталога. Логика работы очень удачная: клик по директории перестраивает граф от выбранной точки, а клик по центру поднимает на уровень выше. То есть графический режим у duc — это не статичная картинка, а полноценная навигация по иерархии, только не списком, а кольцами.

Клавиши графического режима

  • + — увеличить максимальную глубину графика;

  • - — уменьшить максимальную глубину;

  • 0 — вернуть глубину по умолчанию;

  • a — actual/apparent size;

  • b — точные байты или сокращённые единицы;

  • c — размер или количество файлов;

  • f — включить или выключить fuzz;

  • g — включить или выключить gradient;

  • p — переключать palette;

  • backspace — подняться на каталог выше.

Что дают опции графического режима

У duc gui и duc graph общая логика оформления:

  • --levels — сколько уровней рисовать в глубину;

  • --palette — палитра (size, rainbow, greyscale, monochrome, classic);

  • --gradient — градиентная окраска;

  • --fuzz — степень размытия радиуса;

  • --ring-gap — зазор между кольцами;

  • --dark — тёмный фон для GUI.

Смысл этих параметров не косметический. Например, --levels сильно влияет на читабельность: если уровень вложенности слишком большой, граф быстро превращается в иголки. palette меняет восприятие структуры, а ring-gap помогает визуально отделять кольца друг от друга. То есть duc в графике даёт не только саму идею sunburst, но и достаточно контроля, чтобы сделать её пригодной для практического чтения.

Где duc gui реально полезен

Графический режим особенно хорош в трёх ситуациях.

Во-первых, когда нужно быстро понять общую форму проблемы. Список хорошо показывает лидеров по объёму, но sunburst мгновенно показывает, как именно распределено место: один ли это гигантский каталог, несколько тяжёлых веток, или огромная россыпь мелких потребителей.

Во-вторых, когда вы объясняете структуру хранилища кому-то ещё. Показать список размеров можно системному администратору, но визуализация дискового пространства через кольца гораздо быстрее читается менеджером проекта, коллегой-разработчиком или владельцем NAS, который не живёт в терминале.

В-третьих, когда нужно обнаружить дисбаланс глубины. В текстовом списке легко заметить тяжёлый верхний уровень, но труднее понять, насколько далеко внутрь уходит ветка разрастания. Sunburst это показывает буквально формой.

Иллюстрация sunburst-режима

Ниже — типичный sunburst-граф duc. Именно так программа показывает, где физически лежат байты внутри дерева каталогов.

Sunburst-граф duc

Ещё один пример оформления графа

Этот вариант хорошо показывает, как в duc меняется восприятие структуры при другой палитре и другой подаче кольцевого графика. Для отчётности и визуальной диагностики это важная мелочь: иногда разные палитры реально облегчают чтение плотного дерева.

Пример палитры duc

duc graph: когда нужен не интерактивный экран, а готовый отчёт

duc graph генерирует sunburst-граф по данным из индекса и сохраняет его в файл. Это очень полезный режим, когда вы хотите получить не просто интерактивное окно, а артефакт: картинку, SVG, PDF или HTML, который можно встроить в отчёт, отдать в документацию или приложить к внутреннему разбору проблемы.

Базовый пример:

duc graph -o /tmp/report.png /srv/data

Поддерживаются форматы png, svg, pdf и html, а вывод по умолчанию идёт в duc.png. Специальное имя - позволяет отправлять результат в stdout, что удобно в конвейерах и скриптах.

Ключевые опции duc graph

  • --format=png|svg|pdf|html

  • --output=FILE

  • --levels=N

  • --size=N

  • --dpi=N

  • --palette=NAME

  • --ring-gap=N

  • --gradient

  • --fuzz=N

  • --count

  • --apparent

Как использовать duc graph на практике

Для наглядного PNG:

duc graph --format=png --size=1400 --levels=6 -o storage.png /srv/archive

Для PDF, если нужен вложенный в документ материал:

duc graph --format=pdf --levels=5 -o storage.pdf /srv/archive

Для HTML-графика:

duc graph --format=html -o storage.html /srv/archive

Эти команды полезны не сами по себе, а как часть реальной рутины. Например, вы раз в неделю перестраиваете индекс каталога резервных копий, затем сохраняете PNG или HTML-граф и сравниваете его с предыдущим. Это уже полноценный аудит хранилища, а не разовая диагностика что-то диск внезапно закончился.

Когда график лучше списка, а когда хуже

Список сильнее там, где важны точные числа, сортировка и целенаправленное движение по каталогу. Граф сильнее там, где нужна общая картина, форма распределения и визуальное объяснение того, что происходит с диском. Поэтому у duc нет конфликта между ls, ui и graph: это не взаимоисключающие режимы, а три слоя одного и того же анализа.

duc cgi: веб-доступ к индексу

У duc есть и web/CGI-режим. Он создаёт простую HTML-страницу со списком индексированных директорий и кликабельным графом для навигации по файловой системе. Если включить --list, в HTML добавляется ещё и таблица крупнейших файлов и каталогов. Это особенно интересно в ситуациях, когда индекс уже есть на сервере, а смотреть результаты хочется из браузера.

Главные опции duc cgi:

  • --css-url — внешний CSS вместо встроенного;

  • --header — вставить собственный HTML перед основным контентом;

  • --footer — вставить свой HTML после основного контента;

  • --list — вывести таблицу крупнейших объектов;

  • --tooltip — включить всплывающие подсказки при наведении;

  • --levels, --palette, --ring-gap, --gradient, --dpi, --size — управление графикой, как и у graph.

Важное практическое замечание здесь одно: CGI-режим у duc полезен как внутренний, локальный или административный инструмент, но не как публичный web-сервис. Конфигурация не рассчитана на выставление наружу бездумно. Для внутренней инфраструктуры, локальной сети или короткоживущего диагностического доступа это интересный режим; для публичного размещения — нет.

С точки зрения сценариев использования duc cgi хорош там, где индекс строится по расписанию, а результаты периодически открывают из браузера несколько человек. Это уже почти мини-панель мониторинга хранилища, только очень простая и узкая по задаче. И в этом как раз его плюс: ничего лишнего, только дерево, размеры и граф.

Экспорт данных: duc json и duc xml

Не все любят графику, и не все хотят исследовать диск вручную. Для автоматизации в duc есть duc json и duc xml. Эти режимы выгружают данные из индекса во внешние форматы и делают программу удобной не только для просмотра, но и для последующей обработки в собственных скриптах, генераторах отчётов и внутренних дашбордах.

У обоих режимов есть ключевые параметры:

  • --exclude-files — исключить файлы и оставить только директории;

  • --min_size — порог минимального размера;

  • --apparent — интерпретировать min_size как apparent size;

  • --database — выбрать нужную БД.

Где это реально пригождается

Первый сценарий — собственный отчёт. Например, вы выгружаете JSON по каталогу резервных копий, затем с помощью Python или jq строите свой список топ-20 крупнейших веток и сравниваете значения с предыдущим запуском.

Второй сценарий — облегчённая интеграция с другими инструментами. Если нужно показать распределение данных не в sunburst duc, а в своём внутреннем интерфейсе, JSON-выгрузка отлично подходит. Программа уже сделала тяжёлую работу по индексации, дальше остаётся просто читать структуру.

Третий сценарий — отсеивание шума. С параметром --min_size можно не тащить наружу совсем мелкие узлы дерева, а --exclude-files позволяет строить отчёт именно по директориям. Это особенно удобно для крупных хранилищ, где файлы поштучно никому не интересны, а нужны именно ветви дерева.

ducrc: как сделать duc постоянным рабочим инструментом, а не разовой командой

У duc есть нормальная система конфигурации через ducrc. Программа пытается читать конфиг последовательно из /etc/ducrc, ~/.config/duc/ducrc, ~/.ducrc и ./.ducrc. Это значит, что можно иметь и общесистемные настройки, и пользовательские, и локальные для конкретного проекта или каталога.

Структура файла конфигурации секционная: имя секции соответствует подкоманде, а внутри перечисляются параметры. За счёт этого очень удобно задавать разные дефолты для ls, ui, graph и других режимов. Например, для ls можно заранее включить graph, а для ui — сортировку по имени, если именно так вы чаще работаете.

Пример практичной пользовательской конфигурации:

[global]database=/home/user/.cache/duc/work.db[ls]graphdirs-only[ui]name-sort[graph]levels=6palette=rainbowsize=1400

Такой файл делает duc гораздо удобнее в повседневной работе. Не нужно каждый раз передавать один и тот же путь к базе, отдельно включать графические полосы в ls или заново подбирать глубину для graph. Когда программа используется часто, ducrc экономит ощутимо больше времени, чем кажется.

Особенно полезен локальный ./.ducrc для проектных каталогов. Представим, что у вас есть отдельный архивный каталог, который всегда анализируется в особом режиме: с другой базой, другой глубиной графа и только по директориям. Тогда локальный конфиг позволяет превратить duc в почти контекстно-зависимый инструмент: заходите в каталог — и команды уже работают с правильными настройками.

Actual size и apparent size: почему в duc это не второстепенная опция

Одна из самых полезных особенностей duc — нормальное разделение между actual size и apparent size. В простом использовании многие вообще не задумываются, что это разные вещи, но в дисковом анализе разница бывает принципиальной.

apparent size — это логическая длина файла, то есть то, что обычно показывает ls -l. actual size — это реальное место, которое файл занимает на диске, и именно его обычно отражают du и df. Из-за блочного хранения, sparse-файлов и прочих особенностей файловой системы эти значения могут заметно различаться. По умолчанию duc использует actual size, а переключение на apparent size делается опцией -a или клавишей a в интерактивных режимах.

На практике это важно, например, для образов дисков, резервных копий, sparse-файлов виртуализации и любых ситуаций, где логический размер кажется огромным, а физическое потребление диска совсем другое. Если не переключать режимы осознанно, можно сделать неверный вывод о том, что именно съедает место. duc здесь хорош тем, что не прячет тему, а даёт понятное переключение прямо во время исследования дерева.

Ещё один полезный момент: переключение между режимами в duc ui, duc gui, duc graph, duc cgi, duc json и duc xml делает сравнение системным. Вы можете смотреть одну и ту же ветку как в actual size, так и в apparent size, не меняя инструмент и не ломая себе контекст анализа.

Практические сценарии использования duc

Сценарий 1. Переполненный серверный раздел

Задача: быстро понять, какая ветка разрослась на /var или /srv.

Последовательность работы:

duc index --progress --one-file-system /varduc ui /var

Дальше — навигация клавишами вниз по самым тяжёлым веткам. Если нужно быстро увидеть верхний уровень перед входом в ncurses, можно добавить:

duc ls -g /var

Это очень типичный сценарий для логов, кэшей, каталогов контейнеров, почтовых очередей и временных данных. duc особенно удобен тем, что сначала делает тяжёлую работу, а дальше вы уже исследуете индекс быстро и без постоянных задержек.

Сценарий 2. Архив или медиатека на NAS

Задача: понять не только, где лежат самые тяжёлые данные, но и как они распределены визуально.

Последовательность:

duc index --progress /mnt/mediaduc graph --format=png --size=1600 --levels=6 -o media.png /mnt/mediaduc gui /mnt/media

Сначала строится индекс, затем вы получаете графический отчёт, а потом уже при необходимости исследуете дерево интерактивно. Для медиаархивов и многолетних файловых складов это особенно удачно: кольцевой граф хорошо показывает, не образовался ли в одном месте гигантский перекос.

Сценарий 3. Подготовка внутреннего web-обзора по хранилищу

Задача: дать коллегам простой просмотр дискового дерева из браузера.

Подход:

  1. Индексируете нужное дерево.

  2. Запускаете duc cgi через внутренний CGI-скрипт.

  3. Добавляете --list для списка крупных объектов.

  4. При желании подключаете свой CSS через --css-url.

Это не заменяет полноценную систему мониторинга, но как локальный или внутренний браузерный обзор структуры диска duc работает очень убедительно.

Сценарий 4. Отчёт по владельцу

Задача: оценить, сколько места реально потребляют данные конкретного пользователя или сервисного аккаунта.

Запуск:

duc index --username www-data --progress /srvduc ls -g /srv

Такой режим полезен в shared-hosting, CI-окружениях, серверных сборках и многопользовательских системах. Возможность фильтрации по владельцу — одно из тех свойств duc, которые выводят его за пределы обычного посмотреть, что большое.

Производительность и масштабируемость

Одно из самых сильных качеств duc — ориентация на крупные файловые системы. Программа рассчитана на очень большие деревья и проверялась на системах с сотнями миллионов файлов и хранилищами петабайтного масштаба. Это важный момент не ради красивой цифры, а потому, что сама архитектура duc реально под это заточена: индекс отдельно, просмотр отдельно.

Для обычного пользователя это означает следующее. На небольшой машине duc тоже полезен, но там его преимущества могут быть не столь драматичны: и простые утилиты справятся быстро. А вот когда каталогов и файлов очень много, разница между каждый раз обходим дерево заново и один раз индексируем, потом мгновенно смотрим становится уже стратегической.

Это не отменяет того факта, что индексация сама по себе бывает тяжёлой. duc не нарушает физику: полный обход большого дерева всё равно требует CPU, I/O и времени. Но ровно в этом и смысл программы — сделать так, чтобы эту тяжёлую работу вы выполняли тогда, когда это удобно, а не в каждый момент просмотра.

Что в duc сделано особенно удачно

1. Чёткое разделение на индекс и просмотр

Это фундаментальная сильная сторона программы. Именно за счёт неё duc остаётся удобным на больших объёмах данных.

2. Несколько полноценных способов исследования одной и той же базы

CLI, ncurses, GUI, графический экспорт, CGI, JSON и XML — это не маркетинговый список, а реально разные фронтенды для одного и того же индекса. В работе это ощущается очень удобно.

3. Хороший баланс между сухими цифрами и визуализацией

У многих инструментов есть либо строгий терминальный обзор, либо визуализация. У duc оба мира связаны естественно: сначала список и структура, потом sunburst-графика, либо наоборот.

4. Полезные, а не декоративные опции индексации

Фильтрация по владельцу, исключение ФС, скрытие имён файлов, ограничение глубины, dry-run — всё это делает duc пригодным не только для домашней папки, но и для серьёзной инфраструктурной рутины.

5. Нормальный контроль отображения

Палитры, глубина, кольцевые зазоры, actual/apparent size, file count — это не лишние переключатели, а реальные инструменты чтения структуры данных.

Ограничения и спорные моменты

duc очень хорош, но он не идеален и не универсален для любого сценария.

Во-первых, программа не про сразу открыл и всё увидел в том смысле, как это делают самые простые десктопные анализаторы. Сначала нужен индекс. Если у вас задача одноразовая, совсем маленькое дерево и никакой нужды возвращаться к анализу позже нет, сам подход duc может показаться избыточным.

Во-вторых, индекс нужно обновлять. Если дерево каталогов заметно изменилось, а вы смотрите старую БД, вывод будет честно быстрым, но уже неактуальным. Для регулярного использования это решается cron или системным расписанием, но сам факт нужно держать в голове.

В-третьих, состав доступных команд зависит от сборки. На headless-машине вполне нормально, если есть ls и ui, но нет gui. Для системного администратора это не проблема, а вот пользователь, ожидающий поставил и получил всю графику без вопросов, может удивиться.

В-четвёртых, CGI-режим полезен, но не выглядит как современная безопасная web-панель для публичного размещения. Это внутренний служебный режим, а не замена зрелому web-приложению мониторинга.

Сравнение с аналогами

ncdu

ncdu — очень сильный и заслуженно популярный текстовый анализатор диска с текстовым интерфейсом. Его главная философия — быстрый и простой обзор самых прожорливых по месту каталогов на удалённом сервере, где нет полноценной графической среды. Он действительно очень удобен именно как компактный TUI-инструмент.

Но duc отличается концептуально. ncdu в первую очередь — это интерактивный анализатор, а duc — это индексатор плюс набор фронтендов поверх индекса. Если задача разовая и терминальная, ncdu очень силён. Если же вы хотите строить индекс, потом быстро исследовать его разными способами, делать графики и web-представление, duc заметно шире.

Ещё один нюанс: ncdu сфокусирован на текстовом режиме, тогда как duc охватывает сразу ls, ui, gui, graph, cgi, json и xml. То есть duc — это не конкурент ncdu один в один, а более многорежимный пакет для анализа использования диска. Для серверной терминальной диагностики без лишнего ncdu может быть удобнее; для повторного анализа и отчётности сильнее duc.

gdu

gdu позиционируется как очень быстрый анализатор диска с консольным интерфейсом, особенно хорошо раскрывающийся на SSD за счёт параллельной обработки. У него сильный акцент на скорости сканирования, есть собственный конфиг, режимы работы с базой и даже просмотр архивов.

По ощущениям gdu — это более современный и скоростной терминальный инструмент, тогда как duc выигрывает разнообразием фронтендов и самой идеей долгоживущего индексного слоя с последующей визуализацией. Если вам нужен очень быстрый консольный разбор дерева здесь и сейчас, gdu выглядит весьма убедительно. Если же нужен именно пакет для индексирования, визуализации дискового пространства, sunburst-графиков, web/CGI и экспорта — duc сильнее как экосистема.

Baobab / Disk Usage Analyzer

Disk Usage Analyzer из GNOME ориентирован на другой тип пользователя. Это удобный графический анализатор, который умеет сканировать конкретные каталоги, устройства и даже online accounts, а результаты показывает как деревом, так и графически. Для desktop-среды GNOME это очень удобный, дружелюбный и понятный инструмент.

Но Baobab — это в первую очередь десктопная GUI-программа. duc же заметно лучше вписывается в сценарии, где важен терминал, индекс, серверный режим, экспорт и многоформатность. На личном Linux-десктопе Baobab может быть банально удобнее для открыл и посмотрел. На сервере, NAS, через SSH или в инфраструктурном разрезе duc обычно практичнее.

QDirStat

QDirStat — это мощный Qt-анализатор диска с treemap-визуализацией, деревом, поиском, статистикой типов файлов, cleanup-действиями и очень богатой интерактивностью. У него есть сильные функции вроде multi-selection, file age statistics, bookmarks, packages view, treemap-навигации и прямых cleanup-операций.

Если рассматривать именно графический настольный анализ и последующую уборку, QDirStat часто оказывается мощнее и глубже как GUI-инструмент. Но это другая философия. QDirStat — богатое desktop-приложение для визуального анализа и cleanup-действий. duc — более универсальный индексный набор инструментов, который одинаково естественно живёт в CLI, ncurses, графике и web/CGI. Для администратора и DevOps-работы duc обычно уместнее; для настольной визуальной разборки завалов QDirStat может понравиться больше.

Кому какой инструмент подходит лучше

Инструмент Когда выбирать
duc нужен индекс, повторный быстрый анализ, графики, web/CGI, экспорт
ncdu нужен быстрый и простой TUI-анализ без лишнего
gdu нужен быстрый консольный разбор, особенно на SSD
Baobab нужен дружелюбный GUI на GNOME
QDirStat нужен мощный desktop GUI с treemap и cleanup-сценариями

Если резюмировать сравнение максимально честно, duc — это не лучший инструмент вообще для всех, а лучший инструмент для конкретного типа задач: повторяемый анализ использования диска, работа с индексом, сильный терминальный режим и одновременно хорошая визуализация. Именно в этой связке он и выделяется.

Для кого duc подходит лучше всего

duc особенно хорошо подходит:

  • системным администраторам, которые регулярно разбирают переполнение разделов;

  • DevOps-инженерам, которым нужен анализатор дискового пространства Linux без отказа от терминала;

  • владельцам NAS и файловых архивов;

  • тем, кто хочет иметь и CLI, и ncurses, и графику, и экспорт в одном инструменте;

  • тем, кто анализирует одно и то же дерево не один раз, а постоянно.

Чуть хуже duc подходит пользователю, которому нужен только один раз посмотреть папку Downloads и удалить мусор. В такой задаче индексный подход может быть избыточен. Но как только речь заходит о регулярном аудите хранилища, больших каталогах или серверной рутине, duc уже выглядит очень убедительно.

Итог

duc — это сильная, зрелая и очень практичная программа для анализа использования диска. Её реальная ценность не в одной красивой особенности, а в сочетании нескольких вещей сразу: отдельная индексация, быстрый просмотр по базе, хороший ncurses-интерфейс, сильная sunburst-визуализация, генерация графиков, web/CGI-доступ и экспорт в машиночитаемые форматы.

Главный вывод такой: duc лучше всего раскрывается там, где анализ диска — это постоянная задача, а не случайный эпизод. На сервере, в большом архиве, на NAS, в CI-хранилище, в рабочем дереве проектов, в каталоге резервных копий — везде, где вы хотите сначала один раз качественно построить индекс, а потом исследовать данные без ожидания.

Если нужен простой разовый TUI, можно смотреть в сторону ncdu. Если приоритет — максимально быстрый консольный разбор, интересен gdu. Если нужен максимально дружелюбный desktop GUI, хороши Baobab и QDirStat. Но если нужен именно duc как многоформатный анализатор дискового пространства с индексом, визуализацией дискового пространства, поиском крупных каталогов, sunburst graph и удобной работой в терминале, то это действительно одна из самых интересных программ в своём классе.