通常这两个文件都可用于运行某些diff工具,但我需要找到2个二进制文件中的差异,当其中一个文件驻留在服务器中而另一个文件位于移动设备中时。然后只有不同的部分可以发送到服务器并更新文件。
答案 0 :(得分:1)
您可能通常使用该名称,因为diff
期望其参数是文本文件。
如果给定二进制文件,它只能说它们不同,而不是 的差异。
但您需要仅更新二进制文件的修改部分。
这就是名为Rsync的开源程序的工作方式,但我不知道在移动设备上运行的任何版本。
答案 1 :(得分:1)
有bsdiff工具。 Debian也有一个bsdiff包,还有像python-bsdiff这样的高级编程语言接口。
我认为越狱的iPhone,Android或类似的移动设备可以运行bsdiff,但也许你必须自己编译软件。
但请注意!如果仅使用二进制diff来决定要更新文件的哪个部分,最好使用rsync。 rsync有一个内置的二进制差异算法。
答案 2 :(得分:0)
要找出差异,您必须进行比较。如果无法比较,则无法计算最小差异。
您对本地文件做了哪些更改?
如果只是更新,即未更改数据的大小和位置是固定的,然后块类型校验和解决方案可能会起作用,您可以将文件拆分为块,计算每个块的校验和,并与之前的校验和列表进行比较。然后你只需要发送修改过的块。
此外,如果可能,您可以在本地存储两个版本的文件,旧版本和修改版本。
答案 3 :(得分:0)