Здравствуйте.
Задача такая:
Реализовать на java, php или с++ синхронизацию файлов между компьютером пользователя и папкой пользователя на сервере. Готовые open-source sync прошу не предлагать. Хочется научится самому.
Допустим, на сервере есть папка userfiles, в котором имеются папки пользователей, название которых их email
Ex:
userfiles
- [email protected]
- [email protected]
- [email protected]
0
Ответы
(3)
Сортировать по:
-
Приложение должно работать в одном из двух режимов: либо как клиент - тогда оно проверяет файлы на изменения и отправляет, либо как сервер - слушает порт и ждет новые файлы.
Отслеживать изменения нетрудно, достаточно хранить внутри некоторые параметры: название, дату, длину, и, возможно, хеш файла, и периодически проверять их соответствие.
Организовать связь через сокеты также не должно быть проблемой, тут хватит базовых средств языка и среды, в которых вы работаете.18.03, в 22:09Пожаловаться -
Ну на php обычно реализовать авторизацию прием и хранение файлов.
А вот на с++ как то сканировать папку на компьютере и через http общаться с сервером.
Так как то( -
1На одной стороне создаете список пар (хеш_имени;хеш_контента) и на другой стороне такой же список пар. Которая-то из сторон отправляет свой список другой стороне.
Получатель ищет
а) хеши_имен, которых нет у него (и запрашивает такие файлы себе)
б) хеши_имен, которых нет у отправителя (и отправляет такие файлы ему)
в) хеши_имен, которые есть и там и тут, но не совпадают их хеши_контента (тут нужно решить у кого более свежая версия и соответственно направление обмена)
Если хеш криптостойкий, то можно еще обнаруживать факт переименования файла - хеш_контента не изменится, а хеш_имени изменится. Ну и вообще много разных вопросов в части снижения трафика между сервером и клиентом можно придумать (например, некую аналогию rsync для списка хешей).
Написать ответ
Похожие вопросы