如何同步 2 个或更多监视文件夹
How to sync 2 or more watched folders
我们需要为我们的程序实现一个功能,可以同步 2 个或更多监视文件夹。
实际上,文件夹将驻留在本地网络上的不同计算机上,但为了缩小问题范围,让我们假设该工具在一台计算机上运行,并且具有需要同步的监视文件夹列表,因此对一个文件夹的任何更改都应传播到所有其他文件夹。
到目前为止,我已经考虑了几个问题:
-
删除文件是有效的更改,因此如果文件夹 A 有文件但文件夹 B 没有,则可能意味着该文件是在文件夹 A 中创建的,需要传播到文件夹 B,但也可能意味着该文件已在文件夹 B 中删除,需要传播到文件夹 A。
-
文件可能会在多个目录中同时更改/删除,并且更改冲突,我需要以某种方式解决冲突。
-
一个或多个文件夹可能随时处于脱机状态,因此必须存储更改,并在以后联机时传播到该文件夹。
我不确定社区是否可以在这里提供什么样的帮助,但我正在考虑这些:
-
如果您知道已经这样做的工具,请指出来。但是,我们的产品是闭源和商业的,因此其许可证必须与许可证兼容,以便我们能够使用它。
-
如果您知道有关该问题的任何现有文献或研究(论文等),请链接到它。我认为这个问题已经研究过了。
-
或者,如果您对解决此问题的最佳方法、使用哪种算法、如何解决冲突或竞争条件(如果存在)以及其他陷阱有一般建议。
操作系统是Windows,如果没有工具或库,我将使用Qt和C++来实现它。
这不是特别难。您只需要比较相关的变更日记帐记录。当然,在分布式网络中,您必须假设时钟是同步的。
是的,如果在网络拆分时编辑复杂文件(您无法解析的任何内容),则无法避免问题。这被称为CAP定理 .您的系统不能保持一致,始终可用并且还可以抵抗分区(脱机)
相关文章:
- 如何将更多文件夹添加到c++include路径
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在文档文件夹中创建目录
- "assimp/config.h"找不到,但它在文件夹中
- C++入门 5 版:类消息和文件夹
- 我可以在 Arduino 的库文件夹之外安装库吗?
- 如何按文件扩展名引用文件夹中的文件
- 在QTreeView中仅显示共享驱动器和文件夹
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- 介子复制/安装头文件到输出目录并保持文件夹结构
- vcruntime.h 从 Windows 包含文件夹中丢失?
- 在文件夹迭代上实现 RAII
- 使用 Powershell 命令将 cpp 文件的文件夹编译为 GNU 的 g++
- 使文件夹中的所有文件可供所有项目(子目录)访问
- 无法使用 CMake 从其他文件夹添加源文件
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- 如何同步 2 个或更多监视文件夹
- 如何监视包含所有子文件夹和文件的文件夹