目前正在做一些有关文件同步的研发,我最终偶然发现了 rsync(谁不会呢?)。
上下文:有一个服务器用作中央文件存储库,仅由管理员更新。一些用户从中央存储库同步他们的文件系统。它是单向同步,这意味着用户永远不会更新存储库。更新是通过rsync进行的。
让我们考虑一个小场景:
- 用户开始从服务器更新文件并下载文件 A
- 管理员更新服务器上的文件 A 和 B,创建 A' 和 B'
问题:第三步是什么?
- 用户下载 B'。他有A和B',导致文件之间状态不一致
- 用户下载 B。他有 A 和 B,导致状态一致但过时
- 用户下载 B' 和 A',从而获得一致且最新的状态
- 还有什么吗?
最佳答案
据我所知,这是你的第一个选择:用户将有 A 和 B'。避免这种情况的唯一方法是在 rsync 之前对文件系统进行快照,但不知何故,这感觉像是巨大的杀伤力。
其他解决方案可能是
- 将 A 和 B 放在一个 zip/tar 文件中(管理员/更新者必须执行此操作;否则文件仍然可以在添加第一个和第二个文件之间更新
- 使用 git(或其他 VCS)作为中央存储库
关于file - 如果 rsync 正在备份的文件在此过程中被更新,它会如何表现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10244061/