Я должен постоянно обновлять один относительно небольшой файл по медленному и нестабильному модемному соединению.

Файл представляет собой XML, который может начинаться с 15 КБ, а через два часа - до 500 КБ.

Это однонаправленная репликация. Мое текущее решение постоянно загружает весь файл каждую минуту. Пока что он отлично работает с широкополосными подключениями, но теперь я должен использовать его в месте, где доступен только модем. Иллюзия "данных в реальном времени" теряется из-за медленной загрузки.

Я думал, что rsync может спасти меня от разработки пропиетарного (и эффективного) протокола «только дельта». Интересно, даст ли rsync реальную выгоду в этом конкретном случае.

Итак, вопрос в следующем: подходит ли протокол rsync для одного файла размером от 15К до 500К?

2 ответа2

0

Ну, я сделал это с rsync, и я должен сказать, что он работал нормально.

Он передает так мало данных, что я смог сократить частоту обновления до 20 секунд при узком коммутируемом соединении (на одну треть от предыдущей частоты, которую мы использовали для широкополосного доступа!).

Обновление XML размером 800 КБ теперь требует 5 КБ загрузки и загрузки 800 байт!

Проверка версий при отсутствии изменений для обновления занимает менее 500 байт загрузки + 100 байт загрузки! (Я передаю больше байтов, набирая в обычном сеансе чата!)

Гораздо лучше, чем другие решения различий, и мне не пришлось ничего программировать вокруг этого. (Ранее мы думали добавить механизм push для запуска rsync, но нам это пока не нужно. 20 секунд приемлемо, а опрос очень легкий.)

Путь, rsync!

PS: я не пробовал Git, и это, вероятно, было бы хорошим решением.

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .