远程二进制文件的同步(Diff)

时间:2009-12-09 12:28:06

标签: diff

通常这两个文件都可用于运行某些diff工具,但我需要找到2个二进制文件中的差异,当其中一个文件驻留在服务器中而另一个文件位于移动设备中时。然后只有不同的部分可以发送到服务器并更新文件。

4 个答案:

答案 0 :(得分:1)

您可能通常使用该名称,因为diff期望其参数是文本文件。

如果给定二进制文件,它只能说它们不同,而不是 的差异。

但您需要仅更新二进制文件的修改部分

这就是名为Rsync的开源程序的工作方式,但我不知道在移动设备上运行的任何版本。

答案 1 :(得分:1)

bsdiff工具。 Debian也有一个bsdiff包,还有像python-bsdiff这样的高级编程语言接口。

我认为越狱的iPhone,Android或类似的移动设备可以运行bsdiff,但也许你必须自己编译软件。

但请注意!如果仅使用二进制diff来决定要更新文件的哪个部分,最好使用rsync。 rsync有一个内置的二进制差异算法。

答案 2 :(得分:0)

要找出差异,您必须进行比较。如果无法比较,则无法计算最小差异​​。

您对本地文件做了哪些更改?

  • 插入?
  • 缺失?
  • 更新

如果只是更新,即未更改数据的大小和位置是固定的,然后块类型校验和解决方案可能会起作用,您可以将文件拆分为块,计算每个块的校验和,并与之前的校验和列表进行比较。然后你只需要发送修改过的块。

此外,如果可能,您可以在本地存储两个版本的文件,旧版本和修改版本。

答案 3 :(得分:0)

听起来像rsync的工作。另请参阅librsyncpyrsync

关于rsync算法的一个很酷的事情是你不需要在同一台机器上访问这两个文件。