如何同步 2 个或更多监视文件夹

How to sync 2 or more watched folders

本文关键字:监视 文件夹 何同步 同步      更新时间:2023-10-16

我们需要为我们的程序实现一个功能,可以同步 2 个或更多监视文件夹。

实际上,文件夹将驻留在本地网络上的不同计算机上,但为了缩小问题范围,让我们假设该工具在一台计算机上运行,并且具有需要同步的监视文件夹列表,因此对一个文件夹的任何更改都应传播到所有其他文件夹。

到目前为止,我已经考虑了几个问题:

  • 删除文件是有效的更改,因此如果文件夹 A 有文件但文件夹 B 没有,则可能意味着该文件是在文件夹 A 中创建的,需要传播到文件夹 B,但也可能意味着该文件已在文件夹 B 中删除,需要传播到文件夹 A。

  • 文件可能会在多个目录中同时更改/删除,并且更改冲突,我需要以某种方式解决冲突。

  • 一个或多个文件夹可能随时处于脱机状态,因此必须存储更改,并在以后联机时传播到该文件夹。

我不确定社区是否可以在这里提供什么样的帮助,但我正在考虑这些:

  • 如果您知道已经这样做的工具,请指出来。但是,我们的产品是闭源和商业的,因此其许可证必须与许可证兼容,以便我们能够使用它。

  • 如果您知道有关该问题的任何现有文献或研究(论文等),请链接到它。我认为这个问题已经研究过了。

  • 或者,如果您对解决此问题的最佳方法、使用哪种算法、如何解决冲突或竞争条件(如果存在)以及其他陷阱有一般建议。

操作系统是Windows,如果没有工具或库,我将使用Qt和C++来实现它。

这不是特别难。您只需要比较相关的变更日记帐记录。当然,在分布式网络中,您必须假设时钟是同步的。

是的,如果在网络拆分时编辑复杂文件(您无法解析的任何内容),则无法避免问题。这被称为CAP定理 .您的系统不能保持一致,始终可用并且还可以抵抗分区(脱机)