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

标签 c++ windows qt data-synchronization

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

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

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

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

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

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

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

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

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

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

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

最佳答案

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

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

关于c++ - 如何同步 2 个或更多监视文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19676147/

相关文章:

c++ - Qt "Form Load"函数

c++ - 如何用 C++ 编写一段代码来查找系统路径上文件的完整路径?

c++ - lua 5.2.1 Unresolved external 问题

windows - 在 Windows 命令行中设置 PERL5LIB 的多个路径

c++ - 查看整个 QGraphicsScene

c++ - 引用,地址,取消引用和指针的含义

c++ - 如何用顶级 const 解决这个问题?

c++ - 使用 fopen 读取 C++ 中的文本文件,无需换行转换

c++ - Visual C++ 2010 和 Qt(moc 等)

QTreeView清除选择