我们需要为我们的程序实现一个功能,该功能可以同步2个或更多监视文件夹。
实际上,文件夹将驻留在本地网络上的不同计算机上,但为了缩小问题范围,让我们假设该工具在一台计算机上运行,并且有一个需要同步的监视文件夹列表,所以任何对一个文件夹的更改应传播到所有其他文件夹。
到目前为止,我已经考虑过几个问题:
删除文件是一个有效的更改,因此如果文件夹A有文件但文件夹B没有,则可能意味着该文件是在文件夹A中创建的,需要传播到文件夹B,但它也可能表示文件已在文件夹B中删除,需要传播到文件夹A.
文件可能会在多个目录中同时更改/删除,如果有相互冲突的更改,我需要以某种方式解决冲突。
一个或多个文件夹可能随时处于脱机状态,因此必须存储更改,然后在联机时将其传播到该文件夹。
我不确定社区可以提供什么样的帮助,但我正在考虑这些:
如果您知道已经执行此操作的工具,请指出。我们的产品是封闭源和商业产品,因此其许可证必须与我们的产品兼容才能使用。
如果您知道有关该问题的任何现有文献或研究(论文等),请链接到它。我认为这个问题已经研究过了。
或者,如果您对解决此问题的最佳方法,使用哪种算法,如何解决冲突或竞争条件(如果存在)以及其他问题有一般性建议。
操作系统是Windows,如果不存在任何工具或库,我将使用Qt和C ++来实现它。
答案 0 :(得分:1)
这并不是特别难。您只需要比较相关的change journal records即可。当然,在分布式网络中,您必须假设时钟是同步的。
是的,如果在分割网络时编辑了复杂文件(任何无法解析的内容),则无法避免出现问题。这被称为 CAP theorem。您的系统不能保持一致,始终可用并且还能抵抗分区(脱机)