2009-12-09 107 views
2

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

回答

1

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

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

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

0

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

你对本地文件做了哪些改变?

  • 插入?
  • 删除?
  • 更新?

如果只更新,即。未改变的数据的大小和位置是恒定的,那么块类型的校验和解决方案可能工作,将文件分成块,计算每个块的校验和,并与先前的校验和列表进行比较。那么你只需发送修改后的块。

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

+0

这些文件可能是任何用户在移动电话上执行的任何操作:图像,视频,数据库。 他们定期备份到服务器 – Riho 2009-12-09 12:41:19

1

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

如果给出二进制文件,它只能说它们不同,并不是所不同的是什么

但是你需要只更新二进制文件的修改部分

这就是开放源代码程序Rsync的工作原理,但我不知道在移动设备上运行的任何版本。

+1

rsync在越狱iPhone上运行。 – nalply 2009-12-09 14:04:12

0

听起来像是rsync的工作。另见librsyncpyrsync

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