dskDitto ищет дубликаты файлов параллельно и умеет удалять их

dskDitto, написанная на Go утилита для поиска дубликатов файлов. Она параллельно сканирует указанные каталоги, по умолчанию проверяет содержимое хешем SHA-256 и показывает найденные группы в интерактивном терминальном интерфейсе на Bubble Tea. Для графической работы есть экспериментальный интерфейс на Raylib, который требует сборки с тегом gui, установленными Raylib и CGo.
По умолчанию программа лишь сообщает о дубликатах: режимы --text и --bullet позволяют получить текстовый вывод без запуска интерфейса. Для изменения файлов нужно явно указать --remove
Утилита умеет искать совпадения конкретного файла через --file, группировать файлы только по точному имени через --name-only, а также находить похожее, но не полностью идентичное содержимое в режиме --fuzzy. Для fuzzy-поиска порог сходства по умолчанию составляет 75%; такие результаты доступны только для проверки, автоматическое удаление и создание ссылок отключены. Можно ограничивать сканирование размером, глубиной, скрытыми файлами, ссылками, виртуальными файловыми системами и границами файловой системы, а результаты сохранять в CSV, JSON или обычный текст. На Unix-подобных системах несколько жёстких ссылок на один файл считаются одной записью, поэтому не выдаются за дубликаты, занимающие место.
Для проверки содержимого доступны SHA-256 и BLAKE3. Разработчик оставил SHA-256 значением по умолчанию: для BLAKE3 заявлена более высокая скорость во многих сценариях, но в документации отмечено, что на macOS оптимизированный SHA-256 обычно работает лучше. Установить программу можно командой go install при наличии Go 1.22 или новее; проект распространяется по лицензии Apache.
Ключевые факты
- dskDitto параллельно ищет одинаковые файлы и по умолчанию проверяет содержимое SHA-256.
- Терминальный интерфейс позволяет просмотреть и отметить дубликаты; экспериментальный графический интерфейс требует сборки с Raylib и CGo.
- Удаление включается только через --remove, а замена лишних копий символическими ссылками, сочетанием --remove и --link; по умолчанию программа только сообщает о находках.
- Есть поиск по одному файлу, фильтры сканирования, экспорт в CSV/JSON и отдельный режим поиска похожих файлов с порогом 75% по умолчанию.
- Жёсткие ссылки на один и тот же файл на Unix-подобных системах не считаются отдельными дубликатами.
Почему это важно
Поиск дубликатов нужен, когда одинаковые файлы занимают место в нескольких каталогах. dskDitto объединяет параллельное сканирование, проверку содержимого и просмотр результатов перед изменением файлов; кроме точных совпадений он может показать похожие по содержимому файлы.
Кому это важно
Утилита рассчитана на пользователей, которые разбирают каталоги с загрузками, фотографиями, видео или проектами, а также на тех, кому нужен вывод для сценариев автоматизации. Разработчики и системные администраторы могут использовать текстовый вывод либо экспорт CSV и JSON.
Как это применить
Программу можно установить через go install при наличии Go 1.22 или новее и запустить для нужных каталогов. Сначала стоит выполнить обычное или текстовое сканирование и проверить группы. Для удаления оставляют нужное число копий через --remove
Можно ли доверять
Описание проекта конкретно указывает режимы работы и меры защиты: без явного --remove утилита не изменяет файлы, а операции удаления и создания ссылок обычно требуют подтверждения. Совпадения проверяются хешированием SHA-256 или BLAKE3. Проект опубликован с открытым исходным кодом и лицензией Apache, но заявленная скорость зависит от диска, процессора и выбранных параметров.
Риски и подводные камни
Удаление и замена файлов ссылками меняют содержимое файловой системы, поэтому найденные группы нужно просматривать до подтверждения операции. Флаг --no-confirm убирает защитное подтверждение. Режим --name-only считает дубликатами файлы с одинаковым именем даже при разном содержимом; для него резервные копии не поддерживаются. Режим --fuzzy ищет лишь близкие совпадения и намеренно не разрешает автоматические изменения.