0

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

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

到目前为止,我想到了几个问题:

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

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

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

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

  • 如果您知道已经有此功能的工具,请指出。但是,我们的产品是封闭源代码和商业产品,因此它的许可证必须与我们能够使用它的许可证兼容。

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

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

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

4

1 回答 1

1

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

是的,如果在拆分网络时编辑复杂文件(任何您无法解析的文件),您将无法避免问题。这被称为 CAP 定理。您的系统不能是一致的、始终可用的并且也不能抵抗分区(离线)

于 2013-10-30T08:20:37.790 回答