Что произойдет, если вы внесете изменения в файл объемом 2 ГБ на компьютере A?
Есть несколько способов обнаружения изменений.
Вы можете хешировать файл и посмотреть, отличается ли хеш (дорого). Этот метод используют многие патчеры MMO для проверки целостности файлов и т.д.
Файловая система поддерживает последнее измененное поле. Таким образом, индексирование файла по дате модификации является относительно экономически эффективным. Тогда вам просто нужно регулярно опрашивать каталог и обновлять информацию по мере необходимости.
Многие операционные системы фактически позволяют вам подписаться на список файлов / папок и получать уведомления об их изменении, добавлении новых файлов и т.д.
Тогда нам нужно отправить только изменения. Многие протоколы и алгоритмы поддерживают только отправку изменений. Rsync - это хорошо используемый протокол (и, вероятно, похожий на то, что делает меш), который транслирует только разницу между машинами со сжатием, поэтому он довольно эффективно использует пропускную способность. Проблема с огромными файлами заключается в том, что одно изменение может вызвать огромную цепочку небольших изменений, которые довольно трудно эффективно обработать.
Я почти уверен, что сетка использует как дифференциал, так и сжатие при передаче между машинами. Но это продукт с закрытым исходным кодом, и я не смог найти ничего подтверждающего это.
Кроме того, что произойдет, если я переместу этот файл объемом 2 ГБ в подпапку?
В большинстве случаев вам нужно будет повторно загрузить изменения. Для всех намерений и целей программа увидит это как удаление, а затем новый файл будет добавлен в новом месте.
Теоретически вы можете хэшировать все файлы и посмотреть, сохранено ли новое дополнение, сравнив хэши. Это будет довольно дорого (например, если вы добавляете 1000 небольших файлов).