Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

Синхронизация каталогов   Найти похожие ветки 

 
Alex Dobrushin   (2002-02-27 17:57) [0]

При кажущейся просте задачи она, несомненно, имеет множество "камней". Задача: Есть два компьютера, на которых запущена одна и та же программа, работающая с некоторым набором данных. Данные должны быть общие для обоих компьютеров, но храниться на каждом из компьютеров. Если обработка данных разрешена на одном компьютере, на другом запрещена. Для того, чтобы позволить работать на другом компьютере, необходимо синхронизировать каталоги, т.е. переписать все изменения с одного на другой компьютер и разрешить обработку одному и запретить другому. Получаем по-сути 2 задачи:
1. Синхронизация каталогов, конечно с подкаталогами и копировать только то, что изменилось (или появилось)
2. До и после определить где разрешено обрабатывать, а где запрещено.

При всем при этом конечно проблема - юзер (без него не было бы вопроса), который может выдернуть провод из розетки, налить в клавиатуру чай и т.д. В результате нельзя, чтобы оба компьютера оказались блокированы равно как и оба открыты.

Это не столько вопрос, сколько тема для обсуждения, подскажите плиз, кто сталкивался с какой нибудь задачей (или с обоими), пожелитесь опытом, мнениями, какие могут возникать ситуации и как бороться с ними, возможно кодом (особенно для синхронизации)

Большое спасибо


 
lipskiy   (2002-02-27 20:45) [1]

Была у меня такая (похожая) задача. Делал, правда, для себя, поэтому продукт остался сыроват, но пользую его постоянно. В моем случае осуществляется синхронизация указанных каталогов на любом числе машин. При этом вопрос об открытых на момент синхронизации документах никак не обрабатывается. Просто договариваемся устно (или по чату) - сейчас буду синхронизировать, закрой все.

Проблемы и подводные камни конечно есть, и вот какие обнаружены мной.

Что делать, если один и тот же документ после последней синхронизации модифицировался более чем одним юзером? Я в этом случае вывожу сообщение, что ситуацию надо разрешить руками и отменяю процесс. Показываю файлы и времена их модификации, дальше собирается консилиум и...

Другая проблема.
Моя программа синхронизирует по принципу "Новый поверх старого или отсутствующего". Теперь, если один из юзеров создает временный файл (хотя бы вариант с Вордом, который при работе мусорит и если глюкнет то не чистит за собой), потом запускается синхронизация - весь мусор на всех машинах в точном соответствии! Но это еще полбеды, вычистить это дело программно оказалось не так то просто. Почищу я свои каталоги руками, например, потом запускаю синхронизацию - весь мусор снова летит ко мне. Стало быть, надо вести подробные логи о создаваемых/удаляемых файлах на всех машинах, а моя прога установлена только на одной.

Частично проблему с мусором я решаю настройкой синхронизации - список расширений и масок имен файлов, разрешенный к синхронизации, опция синхронизации вложенного дерева каталогов и его содержимого (отдельно). Но это хорошо только для файлов-темпов, а для удаляемых файлов-документов неподходит.

Еще в этой задаче необходимо следить за синхронизацией системного времени всех машин, иначе неоднозначность.

По части интерфейса я представил настройки как список проектов синхронизации. Каждый проект имеет свои свойства. Каждый проект направлен только на один каталог данной машины и точно такой же на других (с таким же именем). В каждом проекте может участвовать любое число машин. При запуске синхронизации вначале происходит сбор информации (анализ), затем выдается список предстоящей синхронизации с именами файлов, направлением копирования, временами модификации, создаваемыми вложенными путями. Просмотрев список, юзер решает, можно ли запустить физическое копирование.

Подчеркну, что мой вариант хоть и сырой, но натрахался я с ним вдоволь. Непростая логика в результате вытекает, поначалу казалось на порядок проще. И это еще все с условием, что только на одной машине установлена программа синхронизации и она одна управляет синхронизацией всех данных. Никакой связи с такими же программами на других машинах я не делал.

Будут вопросы - плиз.
Не совсем ваша задача у меня была, но все же.


 
Sergii   (2002-03-01 22:25) [2]

А может стоит реализовать задачу в архитектуре Client-Server?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
3-57306
Igor_
2002-02-19 11:09
2002.03.18
Потеря связи с базой


1-57408
RGg
2002-03-02 11:44
2002.03.18
А можно ли Узнать какие функции и процедуры в Dll


1-57381
1g0r
2002-03-01 16:11
2002.03.18
TIniFile.RenameSection


1-57420
Лана Розанова
2002-03-02 21:00
2002.03.18
Конвертация


7-57530
Angar
2001-11-26 11:52
2002.03.18
Как можно программно отключить стандартный драйвер COM-порта в Win98/Me/NT/2000 ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский