Животные радости

На главную
На главную

Синхронизатор

Синхронизатор

Purpose: base description of mRIS (my remote sync)

Author: Al Markov

Содержание: Введение
Требования и ограничения
Лицензия
Инструментарий
Аналоги
Глоссарий

Введение

Программа ориентирована на людей, у которых есть несколько компьютеров за которыми они более или менее постоянно работают. После этого часто возникает желание иметь один и тот же набор файлов на этих машинах. Например записную книжку, которую кто держит в Excel, кто в MS Outlook, кто в простых текстовых файлах. Или любовно собранные и отлаженные шаблоны документов. Или просто фотографии любимой кошки. Но эти компьютеры не соединены между собой сетью и данные на них нельзя синхронизовать между собой простым разглядыванием двух каталогов в Проводнике (Win Commander'е, Far'е, Фрегате, кто, что любит). Тогда файлы начинают носить между компьютерами на дискетах, флэш-брелках, компакт-дисках, ... Но в какой-то момент становится непонятным где что-то меняли, а где не меняли, новейшие данные затираются вчерашними, в общем наступает неразбериха. Иногда полная, иногда частичная. Вот в этом случае и нужна программа, которая будет отслеживать изменение на каждой из машин и предлагать их перенести на другую машину.

Итак, программа предназначена для синхронизация данных между компьютерами без их прямого соединения, такого как - локальная сеть, vpn, параллельный и последовательный порты, и т.д.. Посредником (промежуточным носителем) может выступать любое перезаписываемое устройство - CD-RW, flash, internet disk. Главная отличительная черта - доступ к промежуточнуму устройству по очереди, сессии синхронизации у каждого из компьютеров не совпадают по времени.

Существует большое количество программ для синхронизацию данных, среди них есть даже программы, работающие через посредник. Причины, по которым эти программы не подходят, описаны в разделе <аналоги>.

Требования и ограничения

Программа ориентирована на людей. "Точка. Абзац. Красная строка."

Основное требование - синхронизация данных между компютерами через сменный носитель.

Требуется поддержка MS Windows. Поддержка остальных систем - как получится. В обязательное не включено, но не исключается.

В качестве минимальной единицы данных могут выступать файлы целиком. "Патчи" не поддерживаются.

Программа должна обрабатывать следующие ситуации:
- создание нового файла;
- удаление файла;
- изменение файла (дата, размер, crc/md5);
- переименование/перемещение файла;
- конфликт

Программа должна уметь обнаруживать конфликты и предоставлять средства их разрешения.

Объем базы данных должен быть линейно пропорционален количеству файлов, а не их объему.

Объем пересылаемой информации должен быть минимален и зависеть только от объема изменений.

Таким образом, из двух предыдущих пунктов вытекает, что программа не должна держать копию всех файлов ни локально, ни на сменном носителе.

Программа должна предоставлять полную и ясную информацию о том, что она будет делать с файлами и почему - "заменить файл a.txt из-за изменения даты и crc/md5: старая дата ..., новая дата ..., старая crc/md5, новая crc/md5."

Возможность просмотра старого и нового файла перед обновлением.

Программа должна управляться из командной строки.

Должна быть возможность настройки исключаемых файлов и директорий, как индивидуально, так и по маске, как постоянно, так и одноразово.

Желательно: наличие пользовательских "hook" на разные события.

Желательно: простота установки и используемых средств. То есть не приветствуется использование большого количества обяазательных сторонних пакетов (Cygwin содержит уж очень много всего, его очень заманчиво использовать).

Лицензия

Свободная

Тогда надо вести разработку на каком-нибудь sourceforge.net.

Minors:
- все на английском;
- нельзя продавать;
- надо больше и понятнее делать документацию (?), и вообще больше тратить времени и сил на координацию. Это если кто подключится.

Majors:
- возможное участие многих людей;
- поддержка хостинга (место, CVS, bug-list, ...);
- возможность включить эту разработку в свое портфолио, работодателям можно показывать исходные коды ("вот как я пишу") и/или результаты ("вот как я умею организовывать разработку и что получается");

Своя

Minors:
- нужно искать или организовывать место;
- меньшее кол-во разработчиков.

Majors: - проще координация разработчиков; :-)
- возможность продавать, если получится хорошо.

Глупо делать закрытую лицензию для программы, ориентированной на bash(cygwin), работающей только из командной строки....

Инструментарий

bash, tar, zip/unzip, md5/crc32, grep, tr, ... - Cygwin, Linux.

C++ - Borland C++ Builder, MS VC, FLTK, ...

Data base - text files, interbase, My SQL

Аналоги

Существует большое количество программ, ориентированных прежде всего на синхронизацию данных, которые доступны одновременно. Начиная от Unix'вых rcp, rsync и до всяких маленьких шароваров (см. <аналоги>). У всех есть тот или иной недостаток. Главное, что они ориентированы, в первую очередь, на другие задачи - резервное копирование, синхронизация без посредника (прямая синхронизация).

VuBrief

AllwaySync

SMsync

ZSync

FullSync

Homepage.

Нет синхронизации через посредник.

Глоссарий

Задание

Исключаемые файлы

Исключаемые пути

Конфликт - изменение одного и того же файла на двух удаленных компьютерах между сессиями синхронизации.

Посредник

Сессия синхронизации

Снимок системы

The end


Все радости…