Rdfind — консольная утилита для поиска дубликатов файлов по содержимому. Полное название расшифровывается как redundant data find, то есть поиск избыточных данных. Программа нужна в ситуациях, где одинаковые файлы накопились в разных каталогах, резервных копиях, архивах, наборах ISO-образов, рабочих проектах или пользовательских папках, а удалять их вручную неудобно и рискованно.
Главная особенность Rdfind — сравнение не по названию, а по содержимому. Файлы report.pdf, report-copy.pdf и old_report.pdf будут признаны дубликатами только при совпадении данных внутри файла. Наоборот, два файла с одинаковым именем не попадут в группу дубликатов, если содержимое отличается. Поэтому утилита подходит для поиска одинаковых файлов по содержимому, а не для поверхностной сортировки по именам.
Rdfind работает через терминал. У неё нет графического окна, кнопок вроде Scan или Delete, панели предпросмотра и встроенного дерева папок. Вся логика задаётся командой и параметрами: пользователь передаёт один или несколько путей, а затем выбирает, нужно ли только создать отчёт, удалить копии, заменить их жёсткими ссылками или создать символические ссылки. Такой формат делает программу удобной для серверов, NAS, скриптов, системных задач и регулярной очистки каталогов, где графический интерфейс не нужен.
По умолчанию Rdfind ничего не удаляет. Обычный запуск создаёт файл results.txt в текущем рабочем каталоге и показывает, сколько места можно освободить. Это важное поведение: программа сначала даёт список найденных совпадений, а действия с файлами выполняются только при явном указании параметров -deleteduplicates true, -makehardlinks true или -makesymlinks true.
Rdfind особенно полезен в трёх сценариях. Первый — резервные копии, где одни и те же файлы попадают в разные снимки. Второй — архивы с большими файлами: ISO, видео, установочными образами, экспортами проектов. Третий — домашние и рабочие каталоги, где за годы накапливаются повторные копии документов, изображений, архивов и загрузок. При этом программа не ищет похожие фотографии, похожие треки или похожие документы: она работает с полным совпадением содержимого.
Краткая карточка Rdfind
| Параметр | Значение |
| Название | Rdfind |
| Полное название | redundant data find |
| Тип программы | консольная утилита |
| Основная задача | поиск дубликатов файлов по содержимому |
| Интерфейс | командная строка |
| Основной результат обычного запуска | файл results.txt |
| Действие по умолчанию | создание отчёта без удаления файлов |
| Сравнение файлов | по размеру, первым байтам, последним байтам и контрольной сумме |
| Основные действия | отчёт, удаление копий, замена копий symbolic links, замена копий hard links |
| Лицензия | GPLv2 or later |
| Основная аудитория | пользователи Linux и Unix-подобных систем, администраторы, владельцы архивов и резервных копий |
| Подходящие сценарии | backup-каталоги, архивы, NAS, серверы, папки с загрузками, проектные директории |
| Неподходящие сценарии | поиск похожих изображений, визуальное сравнение фото, работа через графический интерфейс |
Rdfind относится к инструментам, где важна предсказуемость. Программа не пытается быть универсальным чистильщиком системы и не смешивает в одном интерфейсе очистку кэша, удаление временных файлов, менеджер автозагрузки и поиск мусорных каталогов. Её задача уже: найти файлы с одинаковым содержимым и дать пользователю управляемый способ избавиться от избыточных копий.
Для пользователей, которым нужна программа с графическим списком результатов, ручной отметкой файлов и визуальным сравнением, больше подходят альтернативы вроде dupeGuru или Czkawka. Для тех, кто хочет автоматизировать поиск дубликатов файлов Linux через терминал, Rdfind выглядит логичнее: команда короткая, отчёт читаемый, а действия разделены на отдельные параметры.
Интерфейс Rdfind: что здесь считается элементами управления
В Rdfind интерфейсом выступают команда, параметры и выходные файлы. Пользователь управляет программой не через кнопки, а через флаги командной строки. Это важно учитывать при чтении инструкций: когда речь идёт о настройке, имеется в виду не пункт меню, а параметр запуска.
Базовая форма команды выглядит так:
rdfind [options] directory_or_file_1 [directory_or_file_2] [directory_or_file_3] ...
Путь может указывать на каталог или отдельный файл. Если передан каталог, Rdfind обходит его рекурсивно. Если передано несколько каталогов, программа ищет совпадения внутри каждого дерева и между деревьями. Порядок аргументов влияет на то, какой файл получит более высокий приоритет и будет считаться оригиналом.
Чаще всего в работе встречаются такие параметры:
| Параметр | Назначение |
| -deleteduplicates true | удалить файлы, признанные дубликатами |
| -makehardlinks true | заменить дубликаты жёсткими ссылками на оригинал |
| -makesymlinks true | заменить дубликаты символическими ссылками на оригинал |
| -dryrun true или -n true | показать предполагаемые действия без изменения файлов |
| -makeresultsfile true | создать файл результатов |
| -outputname name | задать имя файла результатов вместо results.txt |
| -checksum md5\|sha1\|sha256\|sha512\|xxh128\|none | выбрать тип контрольной суммы |
| -minsize N | исключить файлы меньше N байт |
| -maxsize N | исключить файлы размером N байт и больше |
| -ignoreempty true\|false | игнорировать или учитывать пустые файлы |
| -followsymlinks true\|false | переходить или не переходить по символическим ссылкам |
| -removeidentinode true\|false | исключать элементы с одинаковыми inode и device ID |
| -progress true\|false | показывать прогресс во время исключения кандидатов |
| -sleep X | делать паузы между чтением файлов, чтобы снизить нагрузку |
| -buffersize N | задать размер блока при расчёте контрольной суммы |
| -firstbytessize N | задать объём первых байтов для предварительной проверки |
| -lastbytessize N | задать объём последних байтов для предварительной проверки |
Главный управляющий файл — results.txt. В нём находятся группы найденных совпадений. Этот файл удобен тем, что его можно просмотреть обычным cat, открыть в текстовом редакторе, передать в скрипт или сохранить как журнал проверки. Для ручной очистки достаточно запустить Rdfind без действий, прочитать results.txt, а затем удалить ненужные копии самостоятельно.
Запуск rdfind и просмотр results.txt в терминале

На скриншоте видно типичный результат запуска rdfind .: программа сканирует текущий каталог, отбрасывает уникальные файлы, оставляет кандидатов с одинаковым содержимым, создаёт results.txt, а затем файл результатов просматривается через cat results.txt. Это и есть основной рабочий сценарий Rdfind: сначала найти и зафиксировать группы, затем принимать решение.
Как Rdfind ищет дубликаты
Rdfind не считает контрольную сумму каждого файла сразу. Алгоритм построен так, чтобы как можно раньше отбросить файлы, которые не могут быть дубликатами. Это снижает объём чтения с диска и делает поиск дубликатов в больших каталогах практичнее.
Работа проходит поэтапно:
- Rdfind получает список входных аргументов.
- Каждому аргументу назначается приоритет.
- Каталоги обходятся рекурсивно.
- Если передан отдельный файл, он добавляется в общий список.
- Для каждого элемента определяется размер.
- При включённом -removeidentinode true программа удаляет из списка элементы с уже встреченной комбинацией device ID и inode.
- Файлы сортируются по размеру.
- Файлы с уникальным размером исключаются.
- Для оставшихся кандидатов читаются первые байты.
- Файлы с одинаковым размером, но разными первыми байтами исключаются.
- Для оставшихся кандидатов читаются последние байты.
- Файлы с одинаковым размером и первыми байтами, но разными последними байтами исключаются.
- Для ещё оставшихся файлов рассчитывается контрольная сумма.
- В списке остаются файлы с одинаковым размером и checksum.
- Группы сортируются по размеру, приоритету и глубине.
- Первый файл в каждой группе считается оригиналом.
- Остальные файлы получают статус дубликатов.
- Rdfind создаёт отчёт или выполняет действие, заданное параметром.
Такой порядок важен для производительности. Размер файла доступен через метаданные файловой системы, поэтому первичная фильтрация не требует чтения всего содержимого. Сравнение первых и последних байтов дополнительно сужает список кандидатов. Полное чтение и checksum остаются для тех файлов, которые уже прошли несколько фильтров.
Поэтому Rdfind хорошо подходит для каталогов, где лежат крупные файлы: образы дисков, видео, архивы, резервные копии, установочные пакеты. Если размеры файлов различаются, они быстро исключаются. Если размеры совпали, но первые или последние байты различаются, до полной контрольной суммы дело не доходит.
При этом программа не использует похожесть в человеческом смысле. Две фотографии одного объекта с разным разрешением, два MP3-файла с разными тегами или два документа с одинаковым текстом, но разными служебными метаданными, не считаются дубликатами. Rdfind ищет одинаковые файлы по содержимому на уровне байтовой идентичности.
Логика ранжирования: как Rdfind выбирает оригинал
Одна из сильных сторон Rdfind — понятная логика выбора оригинала. Когда программа находит два или больше одинаковых файла, она не просто выбирает произвольный экземпляр. Используется ranking algorithm, который задаёт приоритет внутри группы.
Правила идут последовательно:
- Файл, найденный при сканировании более раннего входного аргумента, получает более высокий ранг.
- Файл, расположенный ближе к корню переданного дерева каталогов, получает более высокий ранг.
- Если файлы найдены внутри одного входного аргумента и находятся на одинаковой глубине, порядок зависит от режима -deterministic.
- При включённом -deterministic true порядок остаётся неопределённым по смыслу, но воспроизводимым.
- При отключённом детерминированном режиме выше ранжируется файл, раньше возвращённый файловой системой.
На практике это означает: если нужно сохранить файлы из главного архива и считать копиями совпадения из резервной папки, главный архив ставят первым аргументом.
rdfind /data/archive /data/backup
В такой команде файлы из /data/archive получают приоритет перед совпадениями из /data/backup. При дальнейшем использовании -deleteduplicates true, -makehardlinks true или -makesymlinks true именно этот порядок влияет на то, какой путь останется оригиналом.
Если поменять порядок аргументов, изменится и логика выбора:
rdfind /data/backup /data/archive
Теперь приоритет получает резервная копия. Поэтому запуск автоматических действий без понимания порядка каталогов — одна из главных ошибок при работе с Rdfind.
Для каталогов с несколькими уровнями вложенности действует второе правило: файл ближе к корню входного дерева получает больший приоритет, чем такой же файл глубже. Это удобно, когда основной экземпляр лежит в верхнем каталоге, а копии разошлись по подпапкам.
Формат results.txt
results.txt — основной файл отчёта Rdfind. Он создаётся в текущем рабочем каталоге, если включён параметр -makeresultsfile true. Имя можно изменить через -outputname name.
Типичная структура файла начинается с заголовка:
# Automatically generated # duptype id depth size device inode priority name
После заголовка идут строки найденных файлов. Каждая строка содержит тип записи, идентификатор группы, глубину, размер, device, inode, priority и путь к файлу.
Основные значения duptype:
| Значение | Что означает |
| DUPTYPE_FIRST_OCCURRENCE | файл, выбранный оригиналом в группе |
| DUPTYPE_WITHIN_SAME_TREE | дубликат найден в том же входном дереве каталогов |
| DUPTYPE_OUTSIDE_TREE | дубликат найден при обработке другого входного аргумента |
| DUPTYPE_UNKNOWN | внутренняя ошибка классификации |
Положительный id обычно относится к оригиналу, отрицательный — к связанным с ним дубликатам. Например:
DUPTYPE_FIRST_OCCURRENCE 1042 2 7904558 2056 6209685 1 /archive/video/file.avi DUPTYPE_WITHIN_SAME_TREE -1042 3 7904558 2056 327923 1 /archive/video/old/file.avi
Здесь обе строки относятся к одной группе. Первая строка показывает экземпляр, который Rdfind считает оригиналом. Вторая строка показывает дубликат в том же дереве каталогов. Размер одинаковый, а разные inode говорят, что это отдельные записи файловой системы, а не уже существующие hard links на один и тот же inode.
Для ручной проверки важнее всего три поля: duptype, size и name. По ним понятно, какой файл признан оригиналом, сколько места занимает группа и где лежат копии. Поля device, inode и priority полезны при разборе hard links, сетевых хранилищ и сложных деревьев резервных копий.
Основные команды Rdfind
Rdfind удобно изучать не через абстрактное описание, а через конкретные команды. Ниже — рабочие варианты, которые покрывают большинство задач.
Только найти дубликаты и создать отчёт
rdfind /path/to/directory
Команда запускает поиск в указанном каталоге, создаёт results.txt и не удаляет файлы. Это безопасный первый запуск для любой новой папки. Такой режим подходит для домашнего каталога, архива фотографий, папки Downloads, директории с документами и резервной копии.
Найти дубликаты в нескольких каталогах
rdfind /path/to/main /path/to/backup
Rdfind сравнивает файлы внутри каждого каталога и между каталогами. Порядок важен: первый путь получает более высокий приоритет. Если /path/to/main — основной архив, а /path/to/backup — резервная копия, команда помогает определить копии в backup-каталоге.
Задать имя отчёта
rdfind -outputname duplicates-report.txt /path/to/directory
Параметр -outputname полезен, когда нужно сохранить несколько проверок рядом: например, отдельно для документов, медиафайлов и резервных копий. Файл отчёта можно назвать по задаче, чтобы не перезаписывать прежний results.txt.
Проверить действие без изменения файлов
rdfind -dryrun true -deleteduplicates true /path/to/directory
-dryrun true показывает, что Rdfind сделал бы при выбранном действии, но не изменяет файлы. Это обязательный промежуточный шаг перед массовым удалением или заменой ссылками.
Удалить дубликаты
rdfind -deleteduplicates true /path/to/directory
Команда удаляет файлы, признанные дубликатами. Оригинал в каждой группе остаётся. Удаление выполняется только после того, как программа сформировала группы по своему алгоритму и ранжированию. Такой режим стоит использовать только после проверки отчёта или dry run.
Заменить дубликаты жёсткими ссылками
rdfind -makehardlinks true /path/to/directory
В этом режиме копии заменяются hard links на оригинальный файл. Пути остаются, но данные на диске становятся общими. Это удобно для архивов и backup-каталогов, где файлы не редактируются после дедупликации.
Заменить дубликаты символическими ссылками
rdfind -makesymlinks true /path/to/directory
Дубликаты заменяются symbolic links на оригинал. В отличие от hard links, символическая ссылка явно указывает на другой путь. Rdfind создаёт абсолютные symlinks, поэтому после перемещения дерева каталогов такие ссылки требуют дополнительной проверки.
Ограничить поиск по размеру
rdfind -minsize 1000000 /path/to/directory
Команда исключает файлы меньше 1 000 000 байт. Такой фильтр полезен для каталогов с огромным количеством мелких файлов, где пользователя интересуют только крупные дубликаты: видео, архивы, образы, экспортированные проекты.
rdfind -maxsize 104857600 /path/to/directory
-maxsize исключает файлы указанного размера и больше. Этот параметр применяют реже, но он удобен, когда нужно проверить только небольшие документы, конфигурации или текстовые файлы, не затрагивая тяжёлые медиаархивы.
Выбрать алгоритм checksum
rdfind -checksum sha256 /path/to/directory
Rdfind поддерживает несколько вариантов: md5, sha1, sha256, sha512, xxh128 и none. Значение none отключает расчёт контрольной суммы и опасно для действий с файлами: одинаковый размер без проверки содержимого не гарантирует, что файлы действительно одинаковые.
Безопасный первый запуск
Первый запуск Rdfind лучше делать только в режиме отчёта. Даже если задача кажется простой, например очистить папку с загрузками, сначала нужно увидеть, какие файлы программа считает оригиналами, а какие копиями.

Подготовка:
- выберите конкретный каталог, а не весь домашний раздел;
- не запускайте автоматическое удаление в корне системы;
- не сканируйте одновременно каталоги с разными владельцами;
- закройте программы, которые могут менять файлы внутри проверяемой папки;
- заранее определите, какое дерево каталогов должно иметь приоритет;
- перед действиями с важными данными сделайте резервную копию.
Базовый сценарий выглядит так:
cd /path/to/workdir rdfind /path/to/check cat results.txt
Рабочий каталог и проверяемый каталог не обязаны совпадать. results.txt создаётся в текущем рабочем каталоге, поэтому удобно сначала перейти в отдельную папку для отчётов, а затем передать Rdfind путь к проверяемому дереву.
После запуска нужно посмотреть строки DUPTYPE_FIRST_OCCURRENCE и связанные с ними строки DUPTYPE_WITHIN_SAME_TREE или DUPTYPE_OUTSIDE_TREE. Если оригиналы выбраны неправильно, меняют порядок аргументов и запускают проверку заново.
Например, для сравнения архива и резервной копии безопаснее сначала выполнить:
rdfind /archive/main /archive/backup
Если в отчёте оригиналами стали файлы из /archive/main, порядок выбран верно. Если пользователь хотел сохранить backup-каталог в качестве главного, порядок нужно поменять.
Как проверять results.txt перед действиями
При чтении отчёта нужно смотреть не только на количество дубликатов, но и на смысл путей. Одинаковый файл может быть нужен в двух местах, особенно если это шаблон, системный файл проекта, копия договора в папке клиента или ресурс, который намеренно хранится рядом с конкретным проектом.
Проверка отчёта должна отвечать на несколько вопросов:
- находится ли оригинал там, где он должен остаться;
- относятся ли дубликаты к одному набору данных, а не к разным рабочим контекстам;
- нет ли в списке системных каталогов;
- не попали ли в отчёт файлы из синхронизируемой папки;
- нет ли файлов, которые редактируются приложениями;
- понятна ли причина совпадения;
- устраивает ли порядок каталогов.
Если отчёт большой, его можно фильтровать стандартными средствами командной строки. Например, посмотреть только строки с оригиналами:
grep DUPTYPE_FIRST_OCCURRENCE results.txt
Или отдельно вывести строки с дубликатами:
grep DUPTYPE_WITHIN_SAME_TREE results.txt
Для сложных архивов полезно сохранять отчёт с датой или названием задачи:
rdfind -outputname archive-duplicates.txt /archive/main /archive/backup
Такой подход не смешивает результаты разных проверок и помогает вернуться к предыдущему состоянию анализа.
Удаление дубликатов через Rdfind
Параметр -deleteduplicates true включает удаление файлов, которые Rdfind признал копиями. Это самый прямой способ освободить место, но он требует наибольшей осторожности. Программа удаляет не лишние по мнению пользователя файлы, а элементы, которые стали дубликатами по алгоритму и ранжированию.
Безопасная последовательность:
rdfind /path/to/directory cat results.txt rdfind -dryrun true -deleteduplicates true /path/to/directory rdfind -deleteduplicates true /path/to/directory
Первый запуск создаёт отчёт. Второй запуск показывает действие в режиме dry run. Третий запуск выполняет удаление. Такая схема длиннее, чем одна команда, но она снижает риск удалить нужные копии.
Важно понимать: Rdfind не является программой восстановления данных. Если дубликат удалён, дальнейшее восстановление зависит уже не от Rdfind, а от файловой системы, резервных копий и инструментов восстановления. Поэтому автоматическое удаление нельзя использовать как предпросмотр очистки. Для предпросмотра существует -dryrun true.
Режим удаления подходит для временных каталогов, папок с загрузками, промежуточных экспортов, повторно скачанных файлов, тестовых копий и данных, которые легко восстановить. Для архивов и резервных копий чаще безопаснее использовать отчёт или hard links: путь сохраняется, а место освобождается за счёт общей ссылки на один набор данных.
Замена дубликатов hard links
Режим -makehardlinks true заменяет дубликаты жёсткими ссылками на оригинальный файл. С точки зрения дерева каталогов файлы остаются на прежних местах: старые пути не исчезают. С точки зрения файловой системы несколько имён начинают указывать на один inode.
rdfind -makehardlinks true /path/to/archive
Hard links полезны для дедупликации архивов, где нужно сохранить структуру каталогов. Например, в резервных копиях один и тот же ISO-образ может встречаться в нескольких снимках. Удаление копий разрушит привычную структуру, а hard links сохранят пути и освободят место.
Замена найденных дубликатов hard links в rdfind

На скриншоте Rdfind запускается с параметром -minsize 1000000 -makehardlinks true ., затем команда stat *.iso показывает одинаковый inode и увеличенное количество ссылок. Это типичный признак того, что несколько имён файла теперь ссылаются на одни и те же данные.
Hard links нужно использовать осознанно. Если один из связанных файлов изменить, фактически изменится содержимое, на которое указывают все имена. Поэтому режим подходит для неизменяемых архивов, ISO, образов, старых резервных копий, статичных наборов данных. Он хуже подходит для документов, которые могут редактироваться в разных папках как независимые версии.
Практический пример:
rdfind -dryrun true -makehardlinks true /backup/monthly rdfind -makehardlinks true /backup/monthly
Первый запуск показывает будущие действия. Второй выполняет замену. После этого проверка через stat помогает убедиться, что у связанных файлов одинаковый inode и увеличенное количество hard links.
Когда hard links лучше удаления
Hard links выигрывают, когда структура путей важна. Например:
- резервные копии должны выглядеть как полные снимки;
- скрипты ожидают файл по старому пути;
- пользователь хочет освободить место без исчезновения имён файлов;
- архивы больше не редактируются;
- одинаковые файлы используются как общие ресурсы в нескольких каталогах.
Удаление проще, но оно меняет структуру. Hard links сложнее для понимания, но сохраняют видимость файлов на местах. Поэтому в backup-каталогах дедупликация файлов через hard links часто безопаснее, чем безвозвратное удаление копий.
Замена дубликатов symbolic links
Параметр -makesymlinks true заменяет дубликаты символическими ссылками на оригинал:
rdfind -makesymlinks true /path/to/directory
Symbolic links отличаются от hard links тем, что ссылка хранит путь к целевому файлу. Это делает связь более явной: в списке файлов видно, что элемент является ссылкой. Такой режим удобен, когда нужно сохранить старые пути, но при этом показать, что данные находятся в другом месте.
Rdfind создаёт абсолютные symbolic links. Это важно для переносимых архивов. Если дерево каталогов затем переместить на другой диск или в другую точку монтирования, абсолютные ссылки могут указывать на старое расположение. Поэтому symlinks подходят для стабильных путей на сервере или рабочей станции, но требуют дополнительной проверки перед переносом архива.
Пример безопасной последовательности:
rdfind /data/projects cat results.txt rdfind -dryrun true -makesymlinks true /data/projects rdfind -makesymlinks true /data/projects
После выполнения нужно проверить несколько ссылок:
ls -l /data/projects/path/to/file
В выводе будет видно, куда указывает symbolic link. Если планируется перенос каталога, лучше заранее оценить, не создаст ли абсолютный путь проблему.
Настройка checksum
Rdfind использует контрольные суммы на финальном этапе отбора кандидатов. До этого программа уже исключает файлы с уникальным размером, разными первыми байтами и разными последними байтами. Checksum нужен для файлов, которые прошли предварительные фильтры.
Доступные варианты:
| Значение | Назначение |
| md5 | быстрый исторически распространённый алгоритм |
| sha1 | стандартный вариант для обычной проверки Rdfind |
| sha256 | более тяжёлый вариант контрольной суммы |
| sha512 | ещё более тяжёлый вариант из семейства SHA-2 |
| xxh128 | быстрый не криптографический checksum |
| none | отключение контрольной суммы |
В задачах очистки и замены файлов безопаснее оставлять checksum включённым. Значение none сокращает проверку, но создаёт риск ложных совпадений: файлы одинакового размера с разным содержимым могут быть ошибочно восприняты как дубликаты. Для отчёта это уже неприятно, а для удаления или замены ссылками — опасно.
xxh128 рассчитан на скорость, но не является криптографическим алгоритмом. Для обычной дедупликации это может быть полезно, если сборка Rdfind поддерживает xxhash. Если поддержка отсутствует, запуск с -checksum xxh128 завершится ошибкой. Для универсальных инструкций безопаснее использовать стандартный checksum без привязки к дополнительной сборочной опции.
Пример выбора SHA-256:
rdfind -checksum sha256 /path/to/directory
Пример опасного режима, который не стоит применять для удаления:
rdfind -checksum none -deleteduplicates true /path/to/directory
Такая команда отключает важный этап подтверждения. В рабочей статье, инструкции или регламенте лучше прямо запрещать её для автоматических действий.
Фильтрация по размеру
Параметры -minsize и -maxsize помогают сузить поиск. Это особенно важно в больших деревьях, где миллионы мелких файлов не дают существенного выигрыша по месту, но замедляют анализ и усложняют отчёт.
-minsize N исключает файлы меньше N байт. Например:
rdfind -minsize 1048576 /data/archive
Команда проверяет только файлы от 1 МиБ. Такой вариант подходит для мультимедийных архивов, ISO, ZIP, TAR, резервных образов, экспортов видео и крупных PDF.
-maxsize N исключает файлы размером N байт и больше:
rdfind -maxsize 1048576 /data/docs
Такой запуск оставляет в проверке только файлы меньше 1 МиБ. Он полезен для небольших текстов, конфигураций, логов, служебных файлов проекта и документов, когда крупные медиафайлы не относятся к задаче.
-ignoreempty true по умолчанию соответствует исключению пустых файлов. Это разумно: пустые файлы часто не являются настоящими дубликатами пользовательских данных. Они могут быть маркерами, lock-файлами, служебными индикаторами или результатом работы приложений. Включать пустые файлы в поиск стоит только при отдельной задаче анализа структуры каталогов.
Работа с symlinks и inode
Rdfind по умолчанию не следует по symbolic links, если не включён параметр -followsymlinks true. Это снижает риск неожиданно выйти за пределы проверяемого дерева каталогов. В серверных папках и пользовательских профилях symlinks могут указывать на другие диски, сетевые ресурсы или системные каталоги, поэтому автоматический переход по ним должен быть осознанным.
Параметр -removeidentinode true исключает элементы с уже встреченной комбинацией inode и device ID. Это нужно, чтобы Rdfind не воспринимал уже существующие hard links на один файл как отдельные дубликаты. В обычной работе это правильное поведение: если несколько имён уже указывают на один inode, место на диске не дублируется.
Сложности возникают в backup-системах, где hard links уже используются для снимков. Если в дереве есть группы файлов, которые уже являются hard links, и одновременно есть такие же данные в другом inode, Rdfind может обработать только часть ситуации за один запуск. Для таких деревьев помогает повторный запуск: после первой дедупликации структура inode меняется, и следующая проверка уточняет оставшиеся группы.
Производительность и нагрузка
Rdfind рассчитан на то, чтобы читать файл полностью только тогда, когда это действительно нужно. Программа сначала исключает уникальные размеры, затем проверяет первые и последние байты, и только после этого считает checksum. Такой порядок особенно заметен в каталогах, где много файлов разного размера: большая часть элементов отбрасывается до чтения полного содержимого.
На производительность влияют:
- количество файлов;
- размер файлов;
- тип носителя;
- скорость файловой системы;
- наличие сетевого доступа;
- кэш операционной системы;
- выбранный checksum;
- параметры -buffersize, -firstbytessize, -lastbytessize;
- включение -progress;
- пауза -sleep.
-buffersize N задаёт размер блока при расчёте checksum. Меньший или больший размер может по-разному влиять на скорость в зависимости от файловой системы, носителя и алгоритма контрольной суммы. Для обычного пользователя менять этот параметр не обязательно. Он нужен при тонкой настройке на больших наборах данных.
-firstbytessize и -lastbytessize управляют объёмом данных, который читается на предварительных этапах. Значение 0 отключает соответствующий шаг. Отключать эти проверки имеет смысл только при понимании последствий: программа будет быстрее переходить к checksum, но потеряет часть раннего отсева.
-sleep X добавляет паузу между чтением файлов. Это полезно на серверах и NAS, где дедупликация не должна создавать резкую дисковую нагрузку. Например, при ночной проверке архивов можно снизить влияние на другие процессы.
-progress true показывает прогресс во время исключения кандидатов. Для интерактивного запуска это удобно: пользователь видит, что программа работает, а не зависла. Для скриптов и cron-задач прогресс часто лишний, потому что он засоряет лог.
Системные требования
Rdfind — лёгкая консольная программа, но её возможности зависят от среды запуска и сборки. Для обычного использования нужны Unix-подобная среда и доступ к файловой системе, где находятся проверяемые каталоги. На Windows подтверждённый вариант работы связан с Cygwin; нативная графическая Windows-оболочка у Rdfind не является частью программы.
Подтверждённые требования и условия:
| Компонент | Что учитывать |
| Среда | Unix-подобная система или Cygwin для Windows-сценария |
| Интерфейс | терминал и доступ к командной строке |
| Права | чтение проверяемых файлов; для удаления и замены ссылками нужны права на изменение каталогов |
| Сборка из исходников | нужен компилятор с поддержкой C++17 |
| Библиотека для сборки | требуется nettle |
| Поддержка xxh128 | зависит от наличия xxhash при сборке |
| Файловая система | для hard links нужна файловая система, поддерживающая жёсткие ссылки |
| Деревья с разными владельцами | не подходят для автоматических действий |
| Память и процессор | отдельные минимальные аппаратные требования не фиксируются как пользовательское условие |
Отдельные требования к CPU, объёму RAM или видеокарте для Rdfind не имеют практического смысла в обычной статье: программа консольная, не использует графический ускоритель и в первую очередь зависит от количества файлов, размера данных и скорости носителя. Для больших архивов узким местом чаще становится дисковый ввод-вывод, а не интерфейс.

Для hard links важно, чтобы оригинал и дубликат находились в пределах файловой системы, где жёсткие ссылки допустимы. Для symlinks важна стабильность путей. Для удаления важны права на unlink в каталогах. Если пользователь запускает Rdfind на сетевом ресурсе, нужно учитывать поведение конкретного протокола и права доступа.
Практические сценарии применения
Резервные копии
В backup-каталогах Rdfind полезен, когда несколько снимков содержат одни и те же файлы. Удаление копий здесь часто нежелательно: структура резервной копии должна оставаться полной и понятной. Поэтому главный режим для таких задач — отчёт или -makehardlinks true.
Пример безопасного подхода:
rdfind /backup/snapshots cat results.txt rdfind -dryrun true -makehardlinks true /backup/snapshots rdfind -makehardlinks true /backup/snapshots
После замены hard links дерево каталогов сохраняет прежние пути. При этом одинаковые данные занимают место один раз. Такой подход подходит для архивных снимков, которые не редактируются после создания.
Архив ISO и установочных файлов
ISO-образы, установочные архивы и большие пакеты часто копируются в разные папки: Downloads, Archive, VM, Installers, Backup. Если файлы полностью одинаковые, Rdfind быстро определяет совпадения по размеру, первым/последним байтам и checksum.
Для такого сценария полезен -minsize, чтобы не смешивать крупные образы с мелкими служебными файлами:
rdfind -minsize 100000000 /data/iso /data/downloads
После отчёта можно решить, что делать: удалить копии в папке загрузок, заменить их hard links или оставить всё без изменений.
Фотоархив
Rdfind подходит только для точных копий фотографий. Если один и тот же JPG был скопирован в разные папки без изменений, программа найдёт совпадение. Если фотография была пересжата, уменьшена, повернута, переименована с изменением метаданных или экспортирована заново, Rdfind не будет считать её тем же файлом.
Для фотоархива это одновременно плюс и ограничение. Плюс — программа не удалит похожий, но отличающийся снимок. Ограничение — она не заменяет инструменты поиска похожих изображений. Для визуально похожих фото лучше использовать Czkawka, dupeGuru Picture Edition, digiKam или другие программы с анализом изображений.
Видеоархив
Видео занимают много места, поэтому даже несколько точных дубликатов дают заметный выигрыш. Rdfind хорошо подходит для поиска одинаковых видеофайлов, если они действительно совпадают байт в байт. Файлы с разными контейнерами, разной дорожкой субтитров, изменёнными метаданными или другой степенью сжатия будут разными.
Для видеоархива рациональна такая схема:
rdfind -minsize 50000000 /media/video
Сначала стоит получить отчёт, затем вручную проверить пути. Видеофайлы часто лежат в коллекциях, где одна копия нужна как часть проекта, а другая — как финальный экспорт. Совпадение содержимого не всегда означает, что путь можно удалить без последствий для структуры.
Домашний каталог
Запуск Rdfind на всей домашней папке возможен, но автоматическое удаление по ~/ небезопасно. В домашнем каталоге есть конфигурации приложений, кэши, профили браузеров, служебные файлы, проекты и синхронизируемые папки. Одни и те же маленькие файлы могут быть нужны разным программам.
Лучше проверять конкретные директории:
rdfind ~/Downloads rdfind ~/Documents rdfind ~/Pictures/archive
Так проще понять контекст каждой группы. Для домашнего каталога оптимален режим отчёта и ручной проверки. Автоматическое удаление допустимо только в заранее понятных папках с временными файлами.
Сервер и NAS
На сервере Rdfind удобен тем, что работает без графического интерфейса. Его можно использовать в SSH-сессии, tmux, screen, shell-скрипте или плановой проверке. Но именно на сервере выше цена ошибки: каталоги могут принадлежать разным пользователям, а symlinks могут вести в неожиданные места.
Для NAS и серверов важны правила:
- не запускать автоматические действия по корню хранилища;
- не смешивать каталоги разных владельцев;
- не менять дерево файлов во время сканирования;
- использовать -dryrun true;
- сохранять отчёт;
- проверять права доступа;
- применять -sleep, если нужно снизить нагрузку;
- осторожно относиться к -followsymlinks true.
В серверной среде Rdfind лучше воспринимать как инструмент точечной дедупликации, а не как универсальный автоматический чистильщик.
Проектные папки
В проектных каталогах Rdfind помогает найти повторные копии ресурсов: архивы, исходники, экспортированные файлы, изображения, наборы данных. Но проекты часто используют одинаковые файлы намеренно. Например, один логотип может лежать в нескольких сборках, а один шаблон — в разных подпроектах.
В таких случаях отчёт важнее автоматического действия:
rdfind -outputname project-duplicates.txt /work/project
После просмотра можно вручную решить, какие копии действительно лишние, а какие являются частью структуры проекта.
Плюсы и минусы Rdfind
Плюсы:
- ищет дубликаты по содержимому, а не по имени файла;
- создаёт results.txt без удаления файлов при обычном запуске;
- поддерживает удаление дубликатов через -deleteduplicates true;
- умеет заменять копии hard links через -makehardlinks true;
- умеет заменять копии symbolic links через -makesymlinks true;
- использует последовательный алгоритм отсева кандидатов перед полным checksum;
- учитывает порядок входных аргументов при выборе оригинала;
- подходит для серверов, SSH и автоматизации;
- позволяет ограничивать поиск по размеру;
- поддерживает несколько checksum-алгоритмов;
- имеет dry run для предварительной проверки действий;
- не требует графической среды;
- распространяется под лицензией GPLv2 or later.
Минусы:
- нет графического интерфейса;
- работа требует уверенного обращения с командной строкой;
- автоматическое удаление опасно без просмотра отчёта;
- программа не ищет похожие фотографии, похожие видео и похожую музыку;
- -checksum none опасен для действий с файлами;
- symbolic links создаются абсолютными;
- каталоги с разными владельцами не подходят для автоматической обработки;
- при изменении файлов во время сканирования повышается риск некорректного поведения;
- hard links требуют понимания inode и последствий редактирования связанных файлов;
- для ручного отбора файлов нет встроенной таблицы с чекбоксами.
Сравнение с аналогами
Rdfind нужно сравнивать не с абстрактными поисковиками дубликатов, а с конкретными программами, которые решают похожие задачи. Внутри freeexe.net близкие по смыслу материалы удобно связывать со страницами Auslogics Duplicate File Finder, Duplicate Remover Free, CloneSpy, SearchMyFiles, DocFetcher, LookDisk и Remove Empty Directories. Для задач файлового управления также уместны внутренние ссылки на FreeCommander XE, Double Commander, Q-Dir и FAR Manager.
| Программа | Тип | Чем отличается от Rdfind | Когда выбрать |
| Rdfind | CLI | отчёт results.txt, ranking algorithm, hard links, symlinks, удаление | точная дедупликация в терминале |
| fdupes | CLI | классический поиск дубликатов в каталогах, удобен для списков и удаления | простой вывод групп дубликатов |
| rmlint | CLI | ищет не только дубликаты, но и другие виды файлового мусора, создаёт отчёты и shell-скрипты | комплексная чистка файловой системы |
| dupeGuru | GUI | графический интерфейс, поиск по именам и содержимому, fuzzy matching | ручной отбор и работа без терминала |
| Czkawka | GUI/CLI | модули для дубликатов, пустых папок, больших файлов, похожих изображений и видео | широкий набор задач очистки |
| fclones | CLI | ориентирован на быстрый поиск дубликатов, dry run и предварительный просмотр изменений | крупные наборы данных и строгий контроль перед удалением |
Rdfind и fdupes
fdupes — один из самых известных CLI-инструментов для поиска дубликатов. Он удобен, когда нужно быстро получить группы одинаковых файлов и работать с ними через терминал. Rdfind отличается акцентом на ранжирование оригинала, отчёт results.txt и встроенные действия с hard links и symlinks.
Если нужен простой список дубликатов, fdupes часто воспринимается проще. Если нужно сравнить несколько каталогов, сохранить первый каталог как приоритетный и заменить копии hard links, Rdfind удобнее. Для резервных копий и архивов именно -makehardlinks true становится сильным отличием.
Rdfind и rmlint
rmlint шире по назначению. Он ищет duplicate files and directories, broken symlinks, empty files, recursive empty directories и другие проблемы файловой системы. При этом сам по себе rmlint не изменяет файловую систему сразу: он создаёт отчёты и подготовленные скрипты, которые пользователь может просмотреть и выполнить.
Rdfind уже и прямолинейнее. Он не пытается обнаружить все виды мусора, зато его логика по дубликатам читается проще: нашёл одинаковые файлы, выбрал оригинал, создал results.txt, затем по параметру удалил копии или заменил ссылками. Для одной конкретной задачи Rdfind легче включить в короткий сценарий.
Rdfind и dupeGuru
dupeGuru рассчитан на пользователя, который хочет видеть результаты в окне, отмечать файлы вручную и работать с похожими именами. Программа умеет сканировать имена и содержимое, а fuzzy matching помогает находить похожие названия. Для визуальной проверки и ручного отбора dupeGuru комфортнее.
Rdfind выигрывает там, где графический интерфейс не нужен. На сервере, в SSH, в скрипте или на NAS проще запустить команду и получить текстовый отчёт. Ещё одно отличие — hard links: в типичном сценарии дедупликации backup-каталогов Rdfind позволяет сохранить структуру путей и уменьшить занимаемое место.
Rdfind и Czkawka
Czkawka — многофункциональный инструмент. Она ищет дубликаты по имени, размеру или hash, пустые папки, большие файлы, временные файлы, похожие изображения и похожие видео. Это решение для пользователя, которому нужна не только точная дедупликация, но и широкий набор модулей очистки.
Rdfind проще и уже. Он не заменяет Czkawka для похожих изображений или видео. Зато в точной CLI-дедупликации Rdfind понятен: входные пути, results.txt, ranking algorithm, dry run, hard links, symlinks, удаление. Если задача звучит как найти одинаковые файлы в нескольких папках и заменить копии ссылками, Rdfind подходит лучше.
Rdfind и fclones
fclones — современный CLI-инструмент для поиска дубликатов, ориентированный на большие наборы данных и осторожное выполнение действий. Он позволяет просмотреть и изменить список дубликатов перед удалением, а также использовать dry run для оценки изменений.
Rdfind проще по модели отчёта. Он создаёт results.txt, где группы можно читать и обрабатывать обычными инструментами командной строки. fclones больше подходит тем, кто хочет расширенную фильтрацию и современный workflow. Rdfind — тем, кому нужна стабильная утилита с короткими командами и понятной логикой выбора оригинала.
Отзывы пользователей и профильных изданий
Оценки Rdfind в технических материалах обычно сходятся в нескольких пунктах: программа небольшая, консольная, ориентирована на точные совпадения и полезна там, где нужно освободить место без графического интерфейса. В обзорах Linux-инструментов Rdfind часто ставят рядом с fdupes, rmlint, dupeGuru и Czkawka, но выделяют её за ranking algorithm, results.txt, удаление копий и замену дубликатов hard links.
В пользовательских обсуждениях чаще всего повторяются три идеи. Первая — hard links удобны для архивов и больших backup-наборов, потому что позволяют сохранить все пути. Вторая — отчёт results.txt помогает сначала увидеть результат, а не сразу удалять файлы. Третья — автоматические действия требуют осторожности, особенно при запуске на домашней папке, системных каталогах или хранилищах с разными владельцами.
Усреднённое мнение пользователей сети можно сформулировать так: Rdfind ценят не за визуальный комфорт, а за предсказуемую терминальную работу. Его выбирают те, кому важны содержание файлов, сценарии дедупликации через hard links и возможность включить команду в собственный процесс. Пользователи, которым нужен красивый интерфейс, предпросмотр, отметка файлов мышью или поиск похожих фото, чаще уходят к dupeGuru или Czkawka.
Профильные статьи о Linux-дедупликации обычно описывают Rdfind как инструмент для точных дубликатов. В таких материалах подчёркивают, что команда сравнивает содержимое, создаёт отчёт и может выполнять действия через параметры. При этом серьёзные инструкции предупреждают: запуск -deleteduplicates true без проверки может привести к потере нужных копий, если пользователь не понял порядок ранжирования.
Безопасность и ограничения
Rdfind работает с реальными файлами, поэтому цена ошибки выше, чем у программы, которая только показывает список. Особенно осторожно нужно использовать параметры, меняющие файловую систему: -deleteduplicates true, -makehardlinks true, -makesymlinks true.
Главные правила безопасности:
- не изменять проверяемые каталоги во время работы Rdfind;
- не запускать автоматические действия по /, ~/ или всему NAS без фильтрации;
- не смешивать каталоги разных владельцев;
- не включать -followsymlinks true без понимания путей;
- не использовать -checksum none для удаления и замены ссылками;
- не запускать -deleteduplicates true без отчёта и dry run;
- не применять hard links к файлам, которые будут редактироваться как независимые копии;
- не переносить дерево с absolute symlinks без проверки ссылок;
- не считать похожие фото дубликатами Rdfind;
- не воспринимать одинаковое содержимое как автоматическое разрешение удалить путь.
Rdfind задумывался для дедупликации каталогов, принадлежащих одному пользователю. Это ограничение важно для серверов и общих хранилищ. Если в дереве есть файлы разных пользователей, разные права и разные владельцы, автоматические действия могут создать проблемы доступа, владельца и ожидаемого поведения приложений.
Отдельный риск связан с symlink attack при изменении деревьев во время работы. Если каталог меняется параллельно со сканированием, особенно при удалении или создании ссылок, результат может стать небезопасным. Поэтому перед массовыми действиями нужно остановить процессы, которые пишут в проверяемые директории.
Частые ошибки при работе с Rdfind
Запуск сразу с удалением
Самая опасная ошибка:
rdfind -deleteduplicates true ~/Documents
Даже если каталог кажется понятным, сначала нужен обычный отчёт. Документы могут быть разложены по проектам, клиентам, датам и версиям. Одинаковый файл в двух местах не всегда лишний.
Правильнее:
rdfind ~/Documents cat results.txt rdfind -dryrun true -deleteduplicates true ~/Documents
Неправильный порядок каталогов
Команда:
rdfind /backup /main
и команда:
rdfind /main /backup
дают разную логику выбора оригинала. Если пользователь хочет сохранить /main, этот путь должен идти первым. Порядок входных аргументов — не формальность, а часть алгоритма.
Ожидание поиска похожих файлов
Rdfind не ищет похожие изображения, похожие аудиозаписи, похожие документы и версии одного текста. Он ищет точные совпадения по содержимому. Для похожих фотографий нужна программа с perceptual hashing или визуальным сравнением.
Использование hard links в редактируемых данных
После -makehardlinks true несколько имён указывают на один inode. Если пользователь откроет один из файлов и изменит его, фактически изменится общий набор данных. Для документов, которые должны развиваться независимо, hard links не подходят.
Игнорирование absolute symlinks
-makesymlinks true создаёт абсолютные ссылки. Если архив потом переносится, ссылки могут указывать на старое расположение. Для переносимых архивов symlinks требуют проверки после перемещения.

Запуск на каталогах с разными владельцами
Rdfind не рассчитан на безопасную автоматическую дедупликацию деревьев с разными владельцами и сложной моделью прав. В общем серверном хранилище лучше ограничивать запуск конкретными каталогами одного пользователя или использовать только отчёт.
Отключение checksum
-checksum none нельзя использовать как ускорение для удаления. Одинаковый размер не гарантирует одинаковое содержимое. Этот режим допустим только для специальных диагностических сценариев, где пользователь понимает последствия.
Неправильная работа с пустыми файлами
Пустые файлы часто встречаются в системных и проектных каталогах как маркеры. Их массовое удаление может нарушить работу скриптов. Rdfind по умолчанию игнорирует пустые файлы, и это поведение лучше не менять без отдельной причины.
Практические рекомендации по выбору режима
| Сценарий | Что выбрать | Почему |
| Первый запуск в любой папке | обычный отчёт | нет изменений файловой системы |
| Папка загрузок | отчёт, затем dry run, затем удаление | данные обычно легко проверить |
| Архив ISO | -minsize, отчёт, затем удаление или hard links | крупные точные копии дают заметный выигрыш |
| Backup-снимки | -makehardlinks true после проверки | пути сохраняются, место освобождается |
| Фотоархив | отчёт без автоматического удаления | одинаковые файлы можно найти, похожие фото не обрабатываются |
| Видеоархив | -minsize, отчёт, ручная проверка | большие файлы требуют проверки контекста |
| Сервер | отчёт, dry run, ограниченный путь | важны права и владельцы |
| NAS | отчёт и осторожная дедупликация | возможны сетевые особенности и symlinks |
| Проектная папка | отчёт с -outputname | одинаковые ресурсы могут быть нужны в разных местах |
| Каталоги разных пользователей | не использовать автоматические действия | Rdfind не рассчитан на такую модель |
| Поиск похожих изображений | выбрать другой инструмент | Rdfind ищет только точные совпадения |
| Максимальное сохранение структуры | hard links | имена файлов остаются на местах |
| Явное указание на оригинал | symbolic links | ссылка показывает целевой путь |
| Полное удаление копий | -deleteduplicates true после проверки | освобождает место, но меняет структуру |
Для новичка оптимальный режим — только отчёт. Для опытного пользователя, который работает с неизменяемыми архивами, основной интерес представляют hard links. Для администратора важнее -dryrun true, порядок аргументов, права доступа и предсказуемый вывод в results.txt.
Пошаговая инструкция: найти дубликаты и проверить отчёт
Шаг 1. Выберите ограниченный каталог
Не начинайте с корня системы или всей домашней папки. Возьмите конкретную директорию:
/data/test-archive
Для первого запуска лучше выбрать каталог, где нет системных файлов и где понятна структура данных.
Шаг 2. Перейдите в папку для отчёта
cd /data/reports
Так results.txt появится в отдельном месте, а не внутри проверяемого архива.
Шаг 3. Запустите поиск
rdfind /data/test-archive
После запуска Rdfind покажет этапы обработки: сканирование, удаление кандидатов с уникальным размером, проверку первых байтов, проверку последних байтов, checksum и создание файла результатов.
Справочный вывод rdfind в терминале Linux Mint

Скриншот показывает справочный вывод Rdfind: синтаксис команды, параметры -makesymlinks, -makehardlinks, -deleteduplicates, -makeresultsfile, -followsymlinks, -dryrun, -checksum и другие элементы управления. Для CLI-программы это полноценный интерфейс: все действия задаются именно такими параметрами.
Шаг 4. Откройте results.txt
cat results.txt
Ищите пары и группы строк. В каждой группе должен быть один DUPTYPE_FIRST_OCCURRENCE и один или несколько дубликатов.
Шаг 5. Проверьте, правильно ли выбран оригинал
Если оригинал должен быть в /data/main, этот путь должен идти первым аргументом при запуске:
rdfind /data/main /data/copies
Если отчёт показывает оригиналы в неправильном каталоге, поменяйте порядок аргументов.
Шаг 6. Сохраните отчёт
Для важных данных лучше использовать отдельное имя:
rdfind -outputname test-archive-results.txt /data/test-archive
Так результаты проверки не будут случайно перезаписаны следующим запуском.
Пошаговая инструкция: удалить дубликаты
Удаление стоит выполнять только после отчёта и dry run.
Шаг 1. Создайте отчёт
rdfind /data/downloads
Шаг 2. Просмотрите файл результатов
cat results.txt
Проверьте пути, размеры и типы записей. Убедитесь, что оригиналы находятся в нужных местах.
Шаг 3. Выполните dry run
rdfind -dryrun true -deleteduplicates true /data/downloads
Dry run показывает предполагаемое действие без изменения файлов. Если вывод выглядит ожидаемо, можно переходить к удалению.
Шаг 4. Запустите удаление
rdfind -deleteduplicates true /data/downloads
После выполнения стоит снова запустить Rdfind без действий:
rdfind /data/downloads
Если дубликаты удалены, отчёт станет короче или новых групп не будет.
Пошаговая инструкция: заменить копии hard links
Этот режим удобен для архивов и резервных копий, где нужно сохранить пути.
Шаг 1. Проверьте каталог
rdfind /backup/archive cat results.txt
Шаг 2. Выполните dry run
rdfind -dryrun true -makehardlinks true /backup/archive
Шаг 3. Запустите замену
rdfind -makehardlinks true /backup/archive
Шаг 4. Проверьте inode
stat /backup/archive/path/to/original.iso stat /backup/archive/path/to/copy.iso
Если inode совпадает, файлы стали hard links на одни и те же данные. Количество ссылок также увеличится.
Шаг 5. Зафиксируйте ограничение
После hard links связанные файлы нельзя рассматривать как независимые копии для редактирования. Если архив должен оставаться статичным, режим подходит. Если файлы будут изменяться отдельно, лучше отказаться от hard links.
Пошаговая инструкция: заменить копии symbolic links
Symbolic links уместны, когда нужно явно показать, что копия теперь указывает на оригинал.
Шаг 1. Создайте отчёт
rdfind /data/static
Шаг 2. Проверьте группы
cat results.txt
Шаг 3. Выполните dry run
rdfind -dryrun true -makesymlinks true /data/static
Шаг 4. Создайте ссылки
rdfind -makesymlinks true /data/static
Шаг 5. Проверьте путь ссылки
ls -l /data/static/path/to/duplicate
Вывод покажет, куда указывает symbolic link. Если дерево каталогов планируется переносить, абсолютные ссылки нужно дополнительно проверить после переноса.
Как встроить Rdfind в рабочий процесс
Rdfind хорошо ложится в простой регламент проверки хранилища. Например, для архива можно завести отдельный каталог отчётов:
mkdir -p /data/reports cd /data/reports rdfind -outputname media-duplicates.txt /data/media
Для резервных копий можно сначала создавать отчёт, затем вручную утверждать действие:
rdfind -outputname backup-check.txt /backup/snapshots rdfind -dryrun true -makehardlinks true /backup/snapshots
Для системного администратора важно не превращать Rdfind в безусловную cron-команду с удалением. Лучше разделять анализ и действие: автоматизировать отчёт, а изменение файлов выполнять после проверки. Если всё же нужна регулярная дедупликация архива hard links, каталог должен быть неизменяемым во время запуска и принадлежать одному пользователю.
Пример осторожного регламента:
| Этап | Действие |
| 1 | остановить процессы, пишущие в архив |
| 2 | запустить Rdfind без действий |
| 3 | сохранить отчёт |
| 4 | проверить порядок оригиналов |
| 5 | выполнить dry run |
| 6 | выполнить hard links или удаление |
| 7 | запустить повторную проверку |
| 8 | сохранить итоговый отчёт |
Когда Rdfind не подходит
Rdfind не стоит выбирать, если задача выходит за пределы точного поиска одинаковых файлов.
Программа не подходит для:
- поиска похожих фотографий;
- поиска одинаковых изображений после ресайза;
- поиска музыкальных дублей с разными тегами;
- поиска похожих документов;
- визуального сравнения файлов;
- ручной отметки результатов в графическом окне;
- очистки кэша браузеров;
- удаления временных файлов приложений;
- анализа реестра Windows;
- комплексной оптимизации системы;
- восстановления данных после удаления.
Если нужна графическая работа с дубликатами, уместнее dupeGuru или Czkawka. Если нужен общий поиск файлов по имени и содержимому, пригодятся SearchMyFiles, DocFetcher или файловые менеджеры вроде Double Commander. Если нужно удалить пустые каталоги, ближе по задаче Remove Empty Directories. Если требуется обычная очистка диска, стоит смотреть в сторону Wise Disk Cleaner или CCleaner, но это уже другой класс программ.
FAQ
Rdfind удаляет файлы сразу?
Нет. Обычный запуск создаёт results.txt и показывает информацию о найденных дубликатах. Удаление включается только параметром -deleteduplicates true.
Что находится в results.txt?
В results.txt находятся строки найденных групп: оригиналы, дубликаты, размеры, inode, device, priority и пути к файлам. Основные типы — DUPTYPE_FIRST_OCCURRENCE, DUPTYPE_WITHIN_SAME_TREE и DUPTYPE_OUTSIDE_TREE.
Можно ли искать дубликаты в нескольких папках?
Да. Достаточно передать несколько путей:
rdfind /folder1 /folder2 /folder3
Порядок путей влияет на выбор оригинала.
Как выбрать папку, где файлы должны остаться оригиналами?
Поставьте эту папку первой в команде. Например:
rdfind /main/archive /old/copies
Файлы из /main/archive получат более высокий приоритет при совпадениях.
Чем hard link отличается от symlink?
Hard link — это ещё одно имя для того же inode. Файлы выглядят как отдельные пути, но данные общие. Symlink — это ссылка на путь к другому файлу. Rdfind умеет создавать оба варианта через -makehardlinks true и -makesymlinks true.
Что безопаснее: удалить копии или заменить hard links?
Для архивов и резервных копий чаще безопаснее hard links, потому что структура путей сохраняется. Для временных папок и загрузок проще удаление после проверки. Для редактируемых документов hard links не подходят.
Можно ли использовать Rdfind для похожих фотографий?
Нет. Rdfind ищет точные совпадения содержимого. Для похожих фотографий нужен инструмент с визуальным или perceptual-сравнением.
Что делает dry run?
-dryrun true показывает действия, которые программа выполнила бы при выбранном режиме, но не изменяет файлы. Его стоит использовать перед удалением, hard links и symlinks.
Можно ли отключить checksum?
Можно через -checksum none, но это опасно для действий с файлами. Без checksum файлы одинакового размера могут быть ошибочно восприняты как дубликаты.
Почему Rdfind не показывает привычные кнопки?
Потому что это консольная утилита. Её элементы управления — параметры командной строки и файл результатов.
Подходит ли Rdfind для Windows?
Rdfind используется в Windows-сценарии через Cygwin. Отдельная нативная графическая Windows-версия не относится к самой программе.
Что делать, если results.txt слишком большой?
Сначала ограничьте область поиска. Затем используйте -minsize, -maxsize и -outputname. Для анализа можно фильтровать отчёт через grep, awk и другие текстовые инструменты.
Итог
Rdfind стоит выбирать, когда нужен точный поиск одинаковых файлов по содержимому и управляемое действие через терминал. Программа особенно уместна в архивах, backup-каталогах, наборах ISO-образов, серверных папках и NAS, где важны results.txt, порядок выбора оригинала, dry run и режим hard links.
Для первого запуска достаточно отчёта без действий. Для временных папок можно перейти к удалению после проверки. Для резервных копий и статичных архивов практичнее -makehardlinks true, потому что структура каталогов сохраняется. Для symbolic links нужно учитывать абсолютные пути. Для похожих фото, графического отбора и визуального сравнения лучше выбрать другой инструмент.
Главное правило работы с Rdfind простое: сначала отчёт, затем проверка, затем dry run, и только после этого действие с файлами. Такой порядок сохраняет сильные стороны утилиты и снижает риск ошибочной очистки.
Список изменений
Ветка 1.3.x:
- Ветка 1.3.x закрепила формат, по которому Rdfind долго использовался в дистрибутивах и инструкциях. В этой линии присутствовали архивы 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4 и 1.3.5. Для пользователя это период классической модели Rdfind: консольный запуск, поиск дубликатов, отчёт results.txt, действия через параметры.
- В man page отдельно отмечено исправление старой опечатки в слове occurrence, что могло повлиять на пользовательские скрипты, которые разбирали файл результатов. Это важная деталь для тех, кто автоматизировал обработку results.txt: даже исправление написания типа записи может сломать парсер, если тот ожидает старую строку.
Ветка 1.4.x:
- В ветке 1.4.0 значение checksum по умолчанию перешло на sha1. Это изменение важно для точности и предсказуемости проверки. Rdfind по-прежнему поддерживал другие варианты, но обычный пользователь получал более современный стандарт без дополнительных параметров.
- 1.4.1 стала ближайшим корректирующим релизом после 1.4.0. Для статьи об использовании программы важнее не сама цифра версии, а направление развития: Rdfind постепенно уходил от минимального набора возможностей к более аккуратной модели контроля совпадений.
Ветка 1.5.0:
- Релиз 1.5.0 относится к этапу поддержки проекта и подготовки к дальнейшим изменениям. В пользовательском сценарии Rdfind уже сохранял базовый принцип: поиск по содержимому, отчёт, действия через отдельные параметры, ранжирование оригинала.
Ветка 1.6.0:
- В 1.6.0 добавлена поддержка sha512, а также исправлены проблемы сборки с GCC 11, GCC 12 и GCC 13. Для пользователя это означает расширение набора checksum-алгоритмов. Для сопровождающих пакетов и сборок важнее совместимость с современными компиляторами.
Ветка 1.7.0:
- В 1.7.0 добавлен checksum xxh128. Он быстрее sha1, но не является криптографическим checksum. Также появился параметр -buffersize N, который позволяет управлять размером блока при расчёте контрольной суммы. В этой же ветке проект перешёл на C++17.
- Для практического использования самым заметным стал xxh128: в больших деревьях файлов быстрый checksum может сократить время финального этапа проверки. Но применять его можно только в сборках с поддержкой xxhash, а для универсальных команд безопаснее не завязывать инструкцию на обязательное наличие этой опции.
Ветка 1.8.0:
- Ветка 1.8.0 добавила управление чтением первых и последних байтов через -firstbytessize и -lastbytessize, возможность отключать эти этапы, возможность отключать checksumming, параметр -progress, исправления в dry run и поддержку сборки с nettle 4.0.
- Для пользователя это расширяет контроль над производительностью и выводом. -progress true делает длинный запуск понятнее в терминале. Настройка первых и последних байтов позволяет тоньше управлять предварительным отбором кандидатов. Отключение checksum остаётся опасным режимом для действий с файлами, но как возможность оно отражает ориентацию Rdfind на опытных пользователей и автоматизацию.


Оставте свой отзыв о rdfind