|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.10.2012, 02:42 | #1 |
Регистрация: 17.06.2012
Сообщений: 9
|
Алгоритм синхронизации папок (Webdav)
Решил я написать прогу, работающую с Яндекс.Диск'ом, т.к. их стандартная прога довольно убога. Но проблема появилась уже на стадии создания алгоритма. Получилось примерно так:
1. Сканируем файлы и папки на компе и на сервере. 2. Если файла (или папки) нет на сервере или на компьютере, то копируем файл с сервере на комп или с компа на сервер. 3. Если файл есть и на сервере и на компьютере, то сравниваем файлы. Если файлы не равны, то сравниваем даты и копируем поздний файл на сервер или компьютер. Проблема: Исходные данные: 2 юзера с компами и сервер. Итак, представим ситуацию: 1-й юзер удаляет из синхронизируемой папки на компе файл. Прога при сканировании это обнаруживает и согласно пункту 2 копирует этот файл с сервера на комп. Таким образом получается, что пользователь не может удалить файл. В этом случае 2-й пункт можно заменить на: 2. Если файла (или папки) нет на сервере или на компьютере, то УДАЛЯЕМ файл с сервере или компа. Но вылезет другая проблема. Допустим: 1-й юзер создает файл в синхронизируемой папке на компе. Прога при сканировании это обнаруживает и согласно пункту 2 удаляет этот файл с компа (т.к. его нет на серве). Таким образом получается, что пользователь не может создать файл. Пожалуйста, помоги с алгоритмом, а то уже задолбался. Заранее благодарен. |
12.10.2012, 08:19 | #2 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
Ну так посмотрите как подобные программы работают, какие данные хранит тот же десктопный клиент Яндекс.Диска, Dropbox, 4Share, и т.д. или программы для синхронизации типа GoodSync, Coban Backup и т.п. в каталогах с рабочими данными и настройками (AppData, LocalSettings\AppData), или те же системы контроля версий.
Как правило хранят списки файлов с датой последнего изменения и контрольными суммами. Причем хранится может и у клиента и на сервере (либо на отдельном сервере в БД, либо в том же хранилище в каком-нидь спец. каталоге, с именем которое маловероятно совпадет с именем каталога с пользоват данными. Ну а далее все это дело мониторится сравнивается, изменяется и т.д. |
12.10.2012, 14:31 | #3 |
Регистрация: 17.06.2012
Сообщений: 9
|
Ссылки на алгоритмы "подобных программ" не подскажете? Дизасемблировать что-то не хочется.
P.S. Кстати, система работы Dropbox'а не подойдет, т.к. в нем нельзя удалять файлы, созданные другим пользователем (Предполагается, что прога будет работать на нескольких компах) Последний раз редактировалось 4Dragon; 12.10.2012 в 14:37. |
12.10.2012, 15:11 | #4 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
я писал о том что о алгоритме работы "подобных программ" можно судить по рабочим данным которые они сохраняют у клиента. Как правило эти данные хранятся в профиле пользователя ОС, в Windows в каталогах %AppData% и %LOCALAPPDATA% в подкаталоге с названием сервиса/программы/фирмы.
Естественно нужно не забывать о применении Cerebrum humanum, полезная вещь ;-) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
WebDav клиент на дельфи | alekola | Работа с сетью в Delphi | 6 | 24.11.2014 17:20 |
Объекты синхронизации | f.hump | Windows | 0 | 03.09.2012 15:58 |
Автоматизация синхронизации | tim900 | Помощь студентам | 2 | 14.02.2012 14:45 |
Метод синхронизации | kos1nus | PHP | 4 | 08.09.2011 08:42 |
Проблема синхронизации. | beda | Microsoft Office Word | 3 | 30.06.2010 13:37 |