Компьютер — Сервер: как реализовать синхронизацию файлов?
199
18.03, в 22:09
Здравствуйте.
Задача такая:
Реализовать на java, php или с++ синхронизацию файлов между компьютером пользователя и папкой пользователя на сервере. Готовые open-source sync прошу не предлагать. Хочется научится самому.

Допустим, на сервере есть папка userfiles, в котором имеются папки пользователей, название которых их email
Ex:
userfiles
- [email protected]
- [email protected]
- [email protected]
Ответы (3)
Сортировать по:
  • Приложение должно работать в одном из двух режимов: либо как клиент - тогда оно проверяет файлы на изменения и отправляет, либо как сервер - слушает порт и ждет новые файлы.
    Отслеживать изменения нетрудно, достаточно хранить внутри некоторые параметры: название, дату, длину, и, возможно, хеш файла, и периодически проверять их соответствие.
    Организовать связь через сокеты также не должно быть проблемой, тут хватит базовых средств языка и среды, в которых вы работаете.
  • Ну на php обычно реализовать авторизацию прием и хранение файлов.
    А вот на с++ как то сканировать папку на компьютере и через http общаться с сервером.
    Так как то(
  • 1
    OLS
    На одной стороне создаете список пар (хеш_имени;хеш_контента) и на другой стороне такой же список пар. Которая-то из сторон отправляет свой список другой стороне.

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

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

Войдите, чтобы написать ответ

Войти через TM ID