duff — это Duplicate file finder для Unix-подобных систем: компактная консольная программа, которая ищет одинаковые файлы по содержимому, умеет работать рекурсивно, читать список путей из stdin, выводить кластеры дублей и переключаться в режим, где показывает только лишние копии. Утилита сразу делает ставку не на визуальную оболочку, а на предсказуемую работу в терминале, точные параметры запуска и удобство в shell-сценариях.

Это важный момент для всего обзора: duff не является визуальным чистильщиком диска, не пытается маскироваться под менеджер хранения и не превращает поиск дублей в мастер из нескольких окон. Программа решает очень конкретную задачу — находит duplicate files в заданном наборе файлов и каталогов, после чего либо показывает группы совпадений, либо помогает встроить результат в дальнейшую обработку через find, xargs и shell.

Именно поэтому duff особенно хорошо раскрывается там, где у пользователя уже есть каталог с архивами, резервными копиями, выгрузками проектов, коллекциями документов, музыки, фотографий или копиями рабочих директорий. В таких случаях нужен не красивый интерфейс, а инструмент, который можно запустить точно по нужному пути, ограничить по шаблонам, корректно обработать имена с пробелами и затем превратить вывод в понятный технический workflow.

Скачать duff

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

Что такое duff и чем он отличается от большинства duplicate finder

duff — это утилита, которая сообщает кластеры дубликатов: в обычном режиме она печатает заголовок кластера, а затем список файлов, которые считаются одинаковыми; в excess mode заголовок убирается, а на экран выводятся все файлы, кроме одного, оставленного в группе. Это сразу задаёт характер программы: она не скрывает логику работы, а показывает результат в форме, удобной для чтения человеком и для обработки в скриптах.

Важная особенность duff в том, что это вполне конкретный инструмент со своей моделью поведения. У него нет встроенного предпросмотра изображений, нет панели выбора оригинал / копия мышкой, нет внутренней корзины и нет системы визуальных фильтров. Зато есть точные режимы -r, -e, -0, -t, -d, -p, -z, настройка cluster header через -f, а также возможность читать пути из stdin, если список файлов готовит другая команда.

За счёт этого duff очень хорошо вписывается в типичный Linux- и Unix-сценарий: одна команда собирает набор файлов, вторая находит дубликаты, третья превращает результат в отчёт или осторожное действие. Если нужен поиск дубликатов файлов в Linux без лишнего GUI-слоя, duff ощущается именно как та утилита, которая делает ровно то, что от неё требуется, и не больше.

Какие задачи duff решает лучше всего

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

Программа особенно уместна в таких сценариях:

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

  • анализ резервных копий, где важны не имена, а совпадение содержимого;

  • поиск дублей в исходниках и документации перед рефакторингом или чисткой архива;

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

  • подготовка списка лишних копий перед ручным удалением;

  • автоматизация поиска дублей через shell-пайплайны.

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

Интерфейс duff: здесь вся логика находится в командной строке

Интерфейс duff — это сам синтаксис команды, вывод в терминал и режимы формирования результата. Утилита запускается в форме duff [-0HLPaeqprtz] [-d function] [-f format] [-l limit] [file ...], а если путь не указан, она читает имена файлов из stdin. Именно это и делает duff удобной консольной программой для поиска одинаковых файлов: список можно передать напрямую, сформировать через find или собрать в более сложной Unix-цепочке.

 

С точки зрения ежедневного использования наиболее важны несколько параметров. -r включает рекурсивный обход каталогов; -e переводит утилиту в excess mode; -0 заставляет duff читать и печатать пути с нулевыми разделителями; -d выбирает digest function; -t включает thorough mode; -p переводит программу в physical mode; -z исключает пустые файлы из числа дублей. Это не дополнительные галочки, а основной язык общения с программой.

Отдельно стоит отметить, что duff не следует за симлинками на файлы, а параметры -H, -L и -P относятся только к каталогам. По умолчанию используется -P, то есть симлинки не разворачиваются. Для пользователя это практично: утилита не начинает неожиданно уходить в дополнительные деревья директорий и ведёт себя заметно более предсказуемо при работе с живой файловой системой.

Установка и подготовка к работе

В Linux duff обычно встречается как пакет в репозиториях дистрибутивов, а если нужен source build, проект собирается стандартной autotools-цепочкой: autoreconf -i, ./configure, make, далее установка в систему.

Для практического старта после установки достаточно двух вещей: убедиться, что команда вызывается из терминала, и сразу посмотреть краткую справку. Даже если duff планируется использовать дальше через shell-скрипт, на первом этапе полезно понять её естественный вывод, потому что вся дальнейшая логика — normal mode, excess mode, custom header, null-safe pipeline — вырастает именно из этого формата.

duff хорошо подходит и для настольной системы, и для сервера без графической оболочки. Как инструмент для Linux и Unix-подобных систем он не требует отдельного графического окружения, а значит, спокойно вписывается в удалённые сеансы, tmux/screen, SSH-сценарии и cron-задачи, где нужно не окно, а понятный поток результатов.

Как duff определяет дубликаты

Смысл duff не в сравнении имён, а в сравнении содержимого. Утилита использует SHA-семейство digest-функций как часть проверки совпадений, а выбор конкретного алгоритма задаётся параметром -d. Поддерживаются sha1, sha256, sha384 и sha512; по умолчанию используется sha1. Для типовой работы этого вполне достаточно, а при желании можно переключиться на более тяжёлый digest.

Если нужен максимально осторожный режим, есть -tthorough mode. В нём duff перестаёт доверять одному только digest как окончательной гарантии равенства и сравнивает совпавшие по размеру файлы побайтно. На практике это именно тот режим, который выбирают, когда важнее консервативная точность, чем максимальная скорость.

Ещё один полезный механизм — sampling limit через -l. Если размер файла равен или превышает заданный порог, duff сначала берёт несколько байтов из начала каждого файла, а уже потом считает полный digest. Это чистая оптимизация: она не меняет логику того, какие файлы считаются дубликатами, а лишь помогает сделать проверку рациональнее на больших наборах данных.

Из-за такой модели duff хорошо работает как утилита для удаления дубликатов в широком смысле, но с одним важным уточнением: сама программа в обычном режиме находит и показывает группы, а удаление чаще всего делается уже в связке с другими командами. Это сильная сторона для опытного пользователя и ограничение для новичка: всё прозрачно и контролируемо, но решение о действии остаётся за вами.

Первый запуск: как выглядит обычная работа duff

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

Команда для первого запуска обычно выглядит так:

duff -r /путь/к/каталогу

Рекурсивный поиск дубликатов через -r — это база. Без него duff работает только с тем набором файлов и директорий, который вы ей передали, а с -r проходит по подкаталогам и превращается в полноценный duplicate file finder для всего дерева.

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

Ключевые параметры duff и то, как они ведут себя в реальной работе

-r: рекурсивный обход директорий

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

На практике именно -r превращает duff из утилиты точечной проверки в рабочий инструмент для домашней папки, архива проекта, медиатеки или каталога резервных копий. Большинство реальных дублей лежит не в одном уровне дерева, а в соседних ветках — например, backup, old, final, export, copy, sync.

-a: скрытые файлы и каталоги

По умолчанию скрытые файлы и каталоги при рекурсивном поиске не включаются. Параметр -a меняет это поведение. Если вы работаете только с пользовательскими документами, отсутствие скрытых директорий в сканировании обычно полезно: duff не лезет в технические области без необходимости.

Но бывают сценарии, когда -a нужен: резервные копии dotfiles, рабочие деревья с конфигурациями, контейнерные окружения, сборки, где важные дубликаты лежат именно в скрытых папках. Здесь duff становится уже не просто поиском дублей, а средством аудита всей файловой структуры, включая невидимую часть.

-0: корректная работа с пробелами и нестандартными символами

Один из самых полезных параметров duff — -0. Если имена файлов поступают из stdin, программа считает их null-terminated. Если же duff сама печатает результаты, она также завершает пути и cluster header нулевыми символами, а не переводом строки. Для файловых наборов с пробелами, табами и другими сложными именами это правильный, взрослый способ работы.

В практическом Linux-workflow это значит, что duff умеет быть null-safe. Если вы строите pipeline через find -print0, потом запускаете duff -0, а затем передаёте результат в xargs -0, имена файлов не ломаются на пробелах и спецсимволах. Для автоматизации поиска дублей через shell это не удобная мелочь, а необходимая защита от грубых ошибок.

-e: excess mode

-e переводит программу в excess mode. В этом режиме duff больше не печатает заголовки групп, а для каждого кластера выводит все файлы, кроме одного. То есть normal mode отвечает на вопрос какие группы дубликатов найдены, а excess mode — на вопрос какие копии считаются лишними.

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

-d function: выбор digest-функции

Параметр -d задаёт алгоритм хеширования: sha1, sha256, sha384 или sha512. Это делает duff гибкой утилитой поиска одинаковых файлов по хэшу и содержимому. В повседневной практике большинство пользователей не уйдёт дальше умолчаний, но сама возможность выбора полезна в средах, где есть собственные требования к стратегии сравнения.

-t: thorough mode

Если вы хотите, чтобы утилита после совпадения размеров не ограничивалась digest-частью проверки, нужен -t. В этом режиме duff сравнивает файлы byte by byte. По сути, это режим максимальной аккуратности для тех случаев, когда важнее надёжность, чем темп работы. Для каталогов с критичными документами или инженерными артефактами именно этот режим выглядит наиболее уместно.

-l limit: sampling limit

-l задаёт минимальный размер файла, с которого начинает работать предварительное sampling-сравнение первых байтов перед полным digest. Это optimisation-level настройка. Она нужна не всем, но на больших массивах данных позволяет тонко настраивать поведение duff без изменения сути результата.

-p: physical mode и жёсткие ссылки

-p заставляет duff рассматривать физические файлы, а не hard links как отдельные копии. В результате несколько жёстких ссылок на один и тот же physical file не будут показаны как дубликаты. Для Linux-систем, где hard links используются осознанно, это очень важный режим: иначе отчёт может выглядеть правдоподобно, но по факту не показывать реальное освобождение пространства.

-z: пустые файлы

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

-f format: формат cluster header

Параметр -f меняет заголовок кластера. Доступны подстановки %n, %d, %i, %s, %%; при -t заголовок по умолчанию отличается, потому что digest не вычисляется. Это одна из самых сильных сторон duff как инструмента для shell-автоматизации: можно оставить привычный human-readable заголовок, можно убрать его полностью, а можно вывести только то, что нужно для дальнейшей обработки.

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

-H, -L, -P: симлинки на каталоги

-H — следовать за символическими ссылками, указанными в командной строке, -L — следовать за всеми символическими ссылками, -P — не следовать ни за какими. По умолчанию используется -P. Важно помнить, что речь идёт только о директориях: симлинки на файлы duff не разворачивает. Для системной аккуратности это правильное решение, потому что программа не подменяет фактическую структуру дерева скрытым обходом чужих веток.

-q, -h, -v

-q убирает предупреждения и ошибки, -h показывает помощь, -v — сведения о программе. Для интерактивного использования они вторичны, а вот в скриптах -q бывает очень полезен: duff даёт только полезный поток данных без лишнего шума, особенно если вывод дальше парсится следующей командой.

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

Поиск дублей во всей пользовательской директории

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

duff -r ~/Downloads

или

duff -r ~/Documents

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

Поиск дублей среди файлов определённого типа

Одна из самых сильных сторон duff — работа со stdin. Если набор файлов предварительно фильтруется другой командой, duff спокойно принимает этот список и ищет повторяющиеся файлы уже внутри него. Классический пример — поиск одинаковых header-файлов через find.

find . -name '*.h' -type f | duff

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

Безопасная работа с именами файлов

Когда в каталогах встречаются пробелы, не-ASCII-символы, переносы и прочая некрасота, нужно переходить на null-separated pipeline:

find . -name '*.h' -type f -print0 | duff -0 | xargs -0 -n1 echo

Здесь find передаёт пути с нулевыми разделителями, duff читает их в том же формате, а xargs -0 продолжает цепочку без потери структуры имён. Именно так и выглядит грамотная обработка файловых списков в Unix.

Получение списка только лишних копий

Если нужен именно список файлов-кандидатов на удаление, а не полный отчёт по группам, используется excess mode:

duff -re /путь/к/каталогу

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

Полуавтоматическое удаление

Один из рабочих сценариев — удаление через duff -e0 * | xargs -0 rm. Это рабочая техника, но использовать её стоит только там, где совершенно неважно, какая копия в группе останется. Для реальных пользовательских данных разумнее сначала посмотреть результат через echo, записать его в файл, сверить группы вручную и только потом переходить к удалению.

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

Как duff ведёт себя в проблемных случаях

Имена с пробелами и нестандартными символами

Здесь duff ведёт себя правильно, если пользователь включает -0. Без null-safe режима даже хороший duplicate finder легко превращается в источник ошибок при массовой обработке. С -0 этого не происходит.

Пустые файлы

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

Hard links

Если в файловой системе активно используются жёсткие ссылки, без -p можно получить отчёт, который выглядит убедительно, но на деле не отражает реальную избыточность данных. Physical mode как раз и нужен для того, чтобы multiple hard links на один physical file не считались duplicate files.

Символические ссылки

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

Один и тот же файл передан в командной строке дважды

У duff есть известный крайний случай: если один и тот же файл указан на входе дважды и не используется -p, программа может показать его как дубликат самого себя. Это не проблема каталогов, а именно сценарий с повторным указанием файла в командной строке. В нормальной повседневной работе такое встречается редко, но при автоматической генерации списков путей этот нюанс важно помнить.

Автоматизация задач с duff

Один из главных аргументов в пользу duff — не только поиск дубликатов файлов в Linux, но и то, насколько хорошо она встраивается в shell. Если у вас уже есть find, xargs, sort, awk, cron или простой bash-скрипт, duff становится естественной частью пайплайна, а не отдельным закрытым приложением со своей логикой хранения проекта.

Типичный скриптовый паттерн выглядит так:

  1. сначала другая команда формирует набор файлов;

  2. затем duff находит кластеры дублей;

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

Именно поэтому duff особенно любят те, кому нужен duplicate finder для сервера, а не настольная утилита с превью. На сервере не нужен drag-and-drop, зато нужен строгий вывод, предсказуемые разделители и возможность подменить human-readable header на формат, удобный конкретному скрипту. Здесь -f, -0, -e, -q и stdin-режим складываются в очень цельный инструмент.

При этом автоматизация должна быть разумной. Как только сценарий переходит от собрать отчёт к удалить всё лишнее автоматически, duff требует дисциплины: предварительного dry-run, резервной копии и понимания того, что в excess mode сохранённая копия выбирается без пользовательского приоритета. Это не минус программы, а честное следствие её философии.

Сильные стороны duff

Предсказуемость

duff очень легко читать и очень сложно неправильно понять. Программа или показывает кластеры, или выводит список лишних копий, или читает входной поток путей. За счёт этого она воспринимается как честная Unix-утилита: ничего не прячет, не пытается угадать намерение пользователя и не подменяет контроль красивой автоматикой.

Удобство для скриптов

Поддержка stdin, null-separated режима, форматируемых заголовков и quiet mode делает duff отличным выбором для shell-автоматизации. Многие аналогичные программы либо больше заточены под ручной интерактивный просмотр, либо предлагают слишком агрессивные сценарии удаления, либо хуже вписываются в пайплайны. duff в этом отношении сбалансирован очень удачно.

Точная специализация

duff не пытается быть универсальным файловым комбайном. Она ищет duplicate files, даёт выбор digest-алгоритма, умеет thorough mode, не ломается на корректно подготовленном stdin и хорошо работает в рекурсивном обходе. За счёт такой узкой специализации программа производит впечатление инструмента, который создавали под реальную работу, а не под маркетинговый список функций.

Хороший баланс между ручным и автоматическим режимом

Обычный режим удобен для анализа человеком, excess mode — для дальнейшей машинной обработки. Такой дуализм сделан очень правильно. В одной и той же утилите есть и формат для спокойной ручной проверки, и формат для цепочек с xargs.

Ограничения и слабые места

Нет графического интерфейса

Если пользователь ищет программу, где можно открыть папку мышкой, отсортировать найденные копии по превью, отметить флажками нужные экземпляры и отправить всё лишнее в корзину, duff сразу мимо. Это консольная программа, и именно такой она задумана.

Нет предпросмотра содержимого

duff знает о файлах как о содержимом, размере, принадлежности к кластеру и пути в файловой системе. Но она не показывает миниатюры изображений, не проигрывает медиа, не открывает документы на просмотр и не помогает визуально сравнивать спорные файлы. Это нормально для CLI duplicate finder, но для некоторых категорий пользователей станет стоп-фактором.

Нет встроенной логики выбора лучшего оригинала

В excess mode duff оставляет одну копию, но не предлагает развитых правил вроде сохранять самый старый файл, сохранять файл из приоритетной директории, сохранять экземпляр с наибольшим числом hard links или сохранять копию из reference tree. Если такой интеллектуальный выбор критичен, лучше смотреть в сторону более специализированных альтернатив.

Требуется нормальное владение терминалом

duff не сложная, но она требует понимания shell-логики. Чтобы использовать её на максимум, нужно не бояться find, понимать разницу между newline-separated и null-separated списками, уметь осторожно строить пайплайны и не выполнять опасные команды автоматически без проверки. Для опытного Linux-пользователя это естественно, для новичка — уже порог входа.

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

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

Программа Ключевая идея Где сильнее duff Где слабее duff
fdupes Классический CLI-инструмент поиска дублей, умеет рекурсию, работу с symlinks/hardlinks, фильтры по размеру, omit first Проще модель вывода кластеров, удобный -0, форматирование header, ясный excess mode У fdupes больше встроенных режимов работы с размером, hidden-файлами и дополнительными действиями
rdfind CLI-утилита, ориентированная на контентное сравнение, ranking оригинала и работу с бэкапами duff понятнее и прямолинейнее в ежедневном ручном использовании rdfind сильнее там, где важна система ранжирования оригинала и отдельный results-файл
czkawka Многофункциональный инструмент: duplicate files, similar images, videos, music, empty files и т.д., есть GUI и CLI duff легче, проще, точнее по назначению и удобнее как маленький Unix-инструмент czkawka намного шире по возможностям, особенно если нужны похожие изображения, похожие видео и графический режим
rmlint Продвинутый dedupe и борьба с другим файловым мусором, есть гибкое обращение с hardlinks и GUI Shredder duff проще для быстрого старта и менее перегружен концепциями rmlint мощнее в сложных сценариях дедупликации и последующих действий с файлами

fdupes

fdupes — один из самых естественных конкурентов. Это тоже классическая CLI-программа для duplicate files, умеющая рекурсивный поиск, работу с symlinks, hardlinks, фильтрами размера, исключением нулевых файлов и режимом omit first.

Сильная сторона duff на этом фоне — более прозрачная подача результата как кластеров дубликатов с настраиваемым заголовком и хорошо продуманным -0/stdin-workflow. Если вам нужен инструмент, который комфортно читать глазами и при этом несложно встроить в пайплайн, duff нередко оказывается удобнее. Если же хочется более старой школы подхода с множеством давно привычных опций и дополнительных режимов, fdupes остаётся очень достойной альтернативой.

rdfind

rdfind особенно хорош там, где важна логика выбора оригинала. Программа прямо использует ranking: решает, какой файл считать original, а какой duplicate, и умеет работать с бэкапными деревьями в более формализованной манере. Кроме того, по умолчанию она создаёт results-файл и строит дальнейшую работу вокруг этого отчёта.

duff на этом фоне ощущается проще и строже. Здесь нет развёрнутой системы ранжирования: утилита не пытается навязать сложную стратегию выбора главного экземпляра. Именно поэтому для ежедневной ручной диагностики duff удобнее, а для сценариев, где критично понятие оригинала и нужна чёткая ranking-модель, интереснее выглядит rdfind.

czkawka

Сравнение с czkawka особенно показательно. Czkawka — это уже не просто duplicate file finder, а целая многофункциональная система: она ищет дубликаты по имени, размеру или hash, умеет similar images, similar videos, same music, empty files, temporary files, bad extensions и многое другое, причём доступна и в GUI, и в CLI.

Именно поэтому duff нельзя рассматривать как замену czkawka во всём. У duff другая сила: это маленькая, сфокусированная, предсказуемая утилита для точного поиска одинаковых файлов по содержимому в терминале. Если нужны визуальные сценарии, поиск похожих картинок, музыка по тегам и общая уборка файлового мусора, czkawka объективно богаче. Но если задача узкая, shell-ориентированная и серверная, duff часто выигрывает за счёт чистоты и простоты.

rmlint

rmlint — это уже тяжёлый инструмент для продвинутой дедупликации и поиска другого space waste. Он умеет очень гибко работать с hardlinked-файлами, поддерживает разные режимы трактовки symlinks и имеет собственную GUI-оболочку Shredder. По масштабу возможностей это мощнее и шире, чем duff.

Но вместе с мощью растёт и сложность. duff проще понять, проще внедрить в существующий shell-workflow и проще оставить под полным контролем пользователя. Для многих задач это преимущество. Если же инфраструктура сложная, нужны изощрённые правила дедупликации и более насыщенная экосистема действий после анализа, тогда rmlint будет сильнее.

Кому duff подойдёт лучше всего

duff — очень удачный выбор для нескольких категорий пользователей.

Linux power users

Если терминал — рабочая среда, а не вынужденная необходимость, duff почти наверняка понравится. Утилита минималистична, предсказуема, хорошо стыкуется с find и xargs, не требует графики и не навязывает лишних концепций.

Системные администраторы

На серверах и headless-машинах duff раскрывается особенно хорошо. Там duplicate finder с GUI не нужен, а вот короткая команда, которую можно встроить в проверку, отчёт или регламентную чистку, — очень к месту.

Разработчики

В кодовых базах, архивах исходников, наборах экспортов, старых ветках, документации и бэкапах проектов дубли появляются постоянно. duff удобна тем, что может работать не только по каталогу целиком, но и по заранее отфильтрованному множеству файлов: например, только .h, только .c, только .md, только конкретный поднабор из find.

Те, кто хочет сначала анализ, а потом действие

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

Кому лучше выбрать другую программу

Если нужен графический duplicate finder с панелями, превью и сортировками мышкой, duff не подойдёт. Для таких задач рациональнее смотреть в сторону czkawka GUI или других визуальных решений.

Если нужен поиск похожих, а не строго одинаковых изображений, duff тоже не лучший выбор. Она ищет exact duplicates по содержимому, а не визуально похожие кадры разных размеров, не снимки с водяными знаками и не схожие версии картинок после лёгкой обработки. Здесь нужны инструменты класса czkawka с режимом similar images.

Если критично автоматически выбирать лучший оригинал по внятным правилам, интереснее выглядит rdfind со своей системой ranking. А если нужна продвинутая дедупликация с большим числом сценариев постобработки, то уже стоит смотреть на rmlint.

Итоговый вердикт

duff — это очень удачная утилита поиска дубликатов файлов для тех, кто ценит точность, прозрачность и shell-совместимость. Она не обещает лишнего, не маскирует консольную природу под псевдо-GUI и не превращает поиск дублей в непредсказуемую магию. Вместо этого duff даёт хорошо продуманную модель: normal mode для чтения человеком, excess mode для практической обработки, -0 для безопасных имён, -t для максимальной аккуратности, -f для кастомного заголовка и -p для корректной работы с hard links.

Как консольная программа для поиска одинаковых файлов, duff ощущается зрелым инструментом старой Unix-школы. Она особенно хороша в Linux-среде, на серверах, в скриптах, в инженерных каталогах и в любых ситуациях, где важнее управляемость, чем красивый интерфейс. Не всем подойдёт именно такой подход, но в своём классе duff остаётся очень сильным выбором.

Если оценивать программу как практический duplicate file finder, итог получается довольно ясный: duff стоит выбирать тогда, когда нужен надёжный терминальный инструмент для поиска точных дубликатов и дальнейшей автоматизации через shell. А если нужен визуальный контроль, предпросмотр, похожие изображения и широкий набор смежных режимов, лучше сразу брать более тяжёлый аналог.