Rsync‑подобная утилита: конкурентное сканирование, хеширование, сравнение снимков и быстрое приведение целевой директории к эталону.
Войдите, чтобы начать проектСоздание мощной утилиты, подобной rsync, которая делает целевую директорию точной копией исходной. Утилита конкурентно сканирует обе директории, сравнивает хеши файлов для нахождения различий, а затем конкурентно копирует, обновляет и удаляет файлы для приведения целевой директории в полное соответствие с исходной.
Представьте, что вы — ключевой разработчик в быстрорастущей компании, занимающейся медиа-контентом. Ваша компания управляет огромным количеством данных — фотографиями, видео, дизайнерскими макетами, которые хранятся на множестве серверов.
Проблема: Данные постоянно рассинхронизируются. Маркетологи загружают новые креативы на один сервер, дизайнеры обновляют макеты на другом, а старые версии файлов "замусоривают" систему. Процесс ручной синхронизации и создания бэкапов отнимает часы, полон ошибок и становится узким горлышком для всей команды.
Ваша миссия: Создать внутренний инструмент, кодовое название "Синхронизатор" (Directory Synchronizer). Это мощная утилита, которая должна, как по волшебству, делать одну директорию (например, на рабочем сервере) точной зеркальной копией другой (эталонной). Она должна быть умной, быстрой и надежной. Утилита должна не просто копировать все подряд, а анализировать содержимое, находить различия с помощью хеш-сумм и выполнять только необходимые операции: копировать новые файлы, обновлять измененные и удалять лишние. А главное — делать все это с максимальной скоростью, используя всю мощь конкурентного программирования в Go.
Этот инструмент станет основой для системы бэкапов и автоматического развертывания контента, решив одну из самых насущных проблем компании.
map структуры и вычисление плана синхронизации