在 Linux 上修补二进制文件的好算法是什么?

What would be a good algorithm for patching binary files on Linux?

我正在尝试通过为几乎相似的二进制文件创建补丁来减少到我的嵌入式 Linux 设备的数据传输。

我的设备有内存限制,因此 bsdiff 和 bspatch 等繁重的算法在我的目标上无法承受大约 36-60 MB 的二进制大小。我想知道哪些命令具有最好的差异和修补文件算法,可以使用最少的内存。我也在此处附上 df and free 的输出。

事实证明,rdiff 在内存方面使用了稍微好一点的算法,但它创建的补丁(delta)文件比 bsdiff 或 xdelta3 都大。

xdelta3 创建最小的补丁文件,但它使用比 rdiff 更多的内存来创建补丁。因此,就创建的补丁大小而言,我们有——xdelta3 < bsdiff < rdiff.

关于应用补丁时的内存消耗,我们有—rdiff < xdelta3 < bsdiff

为了比较 xdeltabsdiff,bsdiff (mbsdiff) 似乎在增量大小和内存消耗方面更有效.