是否有可用于同步目录的同步算法/参考?

时间:2009-09-20 02:25:11

标签: algorithm synchronization

我打算编写一个程序,通过互联网在多台计算机上实时同步文件夹。我想知道是否有任何同步算法来处理文件同步冲突,即计算机A试图保存文件,而计算机B已删除文件。

2 个答案:

答案 0 :(得分:8)

您提供的示例正是为什么同步被认为是一个难题。

计算机A删除了计算机B仍然拥有的文件。现在:你如何知道文件是否被添加到B上,应该被复制到A,还是在A上删除,应该在B上删除?你没有,真的。许多同步系统都存在需要由人类解决的冲突变化的可能性。

已经构建了许多工具来进行同步,包括:

  • 版本控制系统,如CVS,Subversion,Mercurial,git,Perforce等。
  • 独立的单向同步程序。它们无法处理任何一方的更改,但它们可以使目标目录看起来与源目录完全相同。这比完整的COPY更好,因为它更快,但它实际上基本相同。示例包括Windows上的rsync,ROBOCOPY和XCOPY / MIR。
  • 易于使用的互联网同步工具,用于同步多台计算机上的文件夹。示例包括Windows Live Folder和Dropbox。这些应用程序通常通过在子目录中创建两个版本的额外副本来解决冲突,以便您以后可以对其进行排序。他们真的认为冲突很少。
  • 复杂应用程序中的内置同步,例如,Microsoft Exchange,Lotus Notes等中的电子邮件/联系人/日历同步。

答案 1 :(得分:3)

您可能还想查看Unison。它是一个多向文件同步工具,它使用rsync算法确保仅发送文件的已更改部分。