Как Windows Live Mesh синхронизирует файлы между компьютерами?

881
Ken Pespisa

Компьютер A и компьютер B синхронизируют данную папку. Вы добавляете файл 2 ГБ в папку на компьютере A, естественно, он проталкивается по проводам на компьютер B, хотя и медленно. Что произойдет, если вы внесете изменения в файл объемом 2 ГБ на компьютере A?

Я полагаю, что выбор действительно

a) он передает весь файл 2 ГБ на компьютер B или b) анализирует различия между двумя файлами и отправляет только изменения по проводам. Служба сетки компьютера B затем применяет эти изменения.

Но что это?

Кроме того, что произойдет, если я переместу этот файл объемом 2 ГБ в подпапку?

6

1 ответ на вопрос

5
Matt

Что произойдет, если вы внесете изменения в файл объемом 2 ГБ на компьютере A?

Есть несколько способов обнаружения изменений.

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

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

  3. Многие операционные системы фактически позволяют вам подписаться на список файлов / папок и получать уведомления об их изменении, добавлении новых файлов и т. Д.

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

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

Кроме того, что произойдет, если я переместу этот файл объемом 2 ГБ в подпапку?

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

Теоретически вы можете хэшировать все файлы и посмотреть, сохранено ли новое дополнение, сравнив хэши. Это будет довольно дорого (например, если вы добавляете 1000 небольших файлов).

Замечательно написано. Тем не менее, я думаю, что вопрос был больше о том, что делает продукт Windows Live Mesh. Chris_K 13 лет назад 5
Я провел некоторое тестирование, и вы правы по обоим пунктам. Исходя из того, как быстро Mesh вернулась в состояние «До даты», определенно существует какая-то разница между машинами, а не весь файл. Также при перемещении файлов я подтвердил, что оригиналы были удалены и новые файлы добавлены в новую папку. Ken Pespisa 13 лет назад 1
Еще один забавный факт. Я переместил 150+ 100 МБ файлов с компьютера А в новую папку, и после этого заметил, что Mesh медленно перетаскивает список на компьютере Б, повторно загружая их, как если бы они были новыми (после удаления файлов из исходной папки). ). Я сэкономил много дополнительной пропускной способности, переместив эти файлы из корзины на компьютер B в нужную папку. Mesh разумно обнаружил изменение, снова отсканировал папку, а затем показал ее как актуальную. Ken Pespisa 13 лет назад 1