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

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

dskDitto, написанная на Go утилита для поиска дубликатов файлов. Она параллельно сканирует указанные каталоги, по умолчанию проверяет содержимое хешем SHA-256 и показывает найденные группы в интерактивном терминальном интерфейсе на Bubble Tea. Для графической работы есть экспериментальный интерфейс на Raylib, который требует сборки с тегом gui, установленными Raylib и CGo.

По умолчанию программа лишь сообщает о дубликатах: режимы --text и --bullet позволяют получить текстовый вывод без запуска интерфейса. Для изменения файлов нужно явно указать --remove : тогда в каждой группе останется заданное число файлов, а остальные будут удалены. С ключом --link лишние копии заменяются символическими ссылками на сохранённый файл. В интерфейсах предусмотрены диалоги подтверждения; отказаться от них можно только явным флагом --no-confirm. Документация отдельно подчёркивает, что без --remove dskDitto ничего не удаляет и не перезаписывает.

Утилита умеет искать совпадения конкретного файла через --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 ; чтобы вместо удаления создать символические ссылки, добавляют --link. Подтверждения следует не отключать, если не требуется автоматизированный запуск.

Можно ли доверять

Описание проекта конкретно указывает режимы работы и меры защиты: без явного --remove утилита не изменяет файлы, а операции удаления и создания ссылок обычно требуют подтверждения. Совпадения проверяются хешированием SHA-256 или BLAKE3. Проект опубликован с открытым исходным кодом и лицензией Apache, но заявленная скорость зависит от диска, процессора и выбранных параметров.

Риски и подводные камни

Удаление и замена файлов ссылками меняют содержимое файловой системы, поэтому найденные группы нужно просматривать до подтверждения операции. Флаг --no-confirm убирает защитное подтверждение. Режим --name-only считает дубликатами файлы с одинаковым именем даже при разном содержимом; для него резервные копии не поддерживаются. Режим --fuzzy ищет лишь близкие совпадения и намеренно не разрешает автоматические изменения.