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

时间:2013-10-30 07:22:10

标签: c++ windows qt data-synchronization

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

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

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

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

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

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

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

  • 如果您知道已经执行此操作的工具,请指出。我们的产品是封闭源和商业产品,因此其许可证必须与我们的产品兼容才能使用。

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

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

操作系统是Windows,如果不存在任何工具或库,我将使用Qt和C ++来实现它。

1 个答案:

答案 0 :(得分:1)

这并不是特别难。您只需要比较相关的change journal records即可。当然,在分布式网络中,您必须假设时钟是同步的。

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