Нам нужно реализовать функцию для нашей программы, которая синхронизировала бы 2 или более просматриваемых папки.
В действительности, папки будут находиться на разных компьютерах в локальной сети, но чтобы сузить проблему, давайте предположим, что инструмент работает на одном компьютере и имеет список просматриваемых папок, которые необходимо синхронизировать, поэтому любые изменения в одной папка должна распространяться на все остальные.
До сих пор я думал о нескольких проблемах:
Удаление файлов является допустимым изменением, поэтому, если в папке A есть файл, а в папке B его нет, это может означать, что файл был создан в папке A и должен распространяться в папку B, но это также может означать, что файл был удален. в папке B и должен распространяться в папку A.
Файлы могут быть изменены / удалены одновременно в нескольких каталогах, и с конфликтующими изменениями мне нужно как-то разрешить конфликты.
Одна или несколько папок могут быть отключены в любое время, поэтому изменения должны быть сохранены, а затем распространены в них, когда они появятся в сети.
Я не уверен, какую помощь может предложить сообщество, но я думаю об этом:
Если вы знаете инструмент, который уже делает это, пожалуйста, укажите это. Однако наш продукт имеет закрытый исходный код и является коммерческим, поэтому его лицензия должна быть совместима с лицензией, чтобы мы могли его использовать.
Если вам известна какая-либо существующая литература или исследование по проблеме (статьи и т. Д.), Пожалуйста, дайте ссылку на нее. Я предполагаю, что эта проблема уже была бы исследована.
Или, если у вас есть общие советы о том, как лучше всего подойти к этой проблеме, какие алгоритмы использовать, как разрешать конфликты или условия гонки, если они существуют, и другие ошибки.
Операционная система Windows, и я буду использовать Qt и C ++ для ее реализации, если не существует инструментов или библиотек.
Это не исключительно сложно. Вам просто нужно сравнить соответствующие изменить записи журнала. Конечно, в распределенной сети вы должны предполагать, что часы синхронизированы.
И да, если сложный файл (что-то, что вы не можете проанализировать) редактируется, пока сеть разбита, вы не можете избежать проблем. Это известно как
CAP теорема . Ваша система не может быть согласованной, всегда доступной, а также устойчивой к разделению (отключается)
Других решений пока нет …