fclones — находим дубликаты файлов с умом

03 Mar, 2025

Репозиторий давно не обновлялся

Последнее обновление было 1 год назад.

2,772
🔱 107
👥 19

Знакомая ситуация: свободное место на диске тает на глазах, но удалять файлы страшно — вдруг сотрётся что-то нужное? Особенно это актуально для разработчиков, у которых накапливаются десятки версий одних и тех же библиотек, бэкапов и временных файлов. Именно здесь на помощь приходит fclones — инструмент для поиска дубликатов, который работает быстрее аналогов благодаря продуманной архитектуре на Rust.

Что может fclones?

Это не просто очередной find с сравнением хешей. fclones умеет:

  • Находить дубликаты по содержимому, даже если имена файлов разные
  • Работать с огромными директориями (миллионы файлов)
  • Минимизировать чтение диска за счёт умного кеширования
  • Гибко фильтровать результаты (по размеру, дате, маске)
  • Формировать отчёты в удобных форматах (JSON, CSV)

Ключевые особенности

  1. Быстрее аналогов — сравнивает файлы по хешам частей, а не целиком
  2. Параллельная обработка — задействует все ядра процессора
  3. Минимум дискового I/O — умное кэширование метаданных
  4. Гибкие критерии — можно искать «почти одинаковые» файлы
  5. Кросс-платформенность — работает на Linux, macOS, Windows

Как это работает технически?

Проект написан на Rust, что обеспечивает:

  • Безопасность работы с памятью
  • Нативную мультипоточность
  • Минимальные накладные расходы

Алгоритм:

  1. Сканирует файловую систему (с кешированием stat)
  2. Группирует файлы по размеру — разные размеры ≠ дубликаты
  3. Для файлов одинакового размера считает хеши блоков
  4. Применяет фильтры по маскам и другим критериям
  5. Формирует отчёт с группами дубликатов

Практическое применение

Где пригодится fclones:

Реклама
  • Очистка системы после установки/удаления ПО
  • Оптимизация бэкапов — удаление повторяющихся версий
  • Анализ датасетов в data science
  • Поиск утечек конфиденциальных данных

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

fclones group /path/to/images --name "*.{jpg,png}" --parallel

Кому стоит попробовать?

fclones особенно будет полезен:

  • Системным администраторам
  • Разработчикам с большими рабочими проектами
  • Специалистам по обработке данных
  • Всем, кто хочет навести порядок в файлах

Проект активно развивается, имеет открытый исходный код (MIT) и уже собрал почти 2.5k звёзд на GitHub. Если вы ещё не пробовали — самое время установить и освободить гигабайты дискового пространства!

Ссылка на проект: github.com/pkolaczk/fclones

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.