Binary 用于虚拟机映像的二进制diff和patch实用程序

Binary 用于虚拟机映像的二进制diff和patch实用程序,binary,diff,vmware,patch,Binary,Diff,Vmware,Patch,我需要经常发布一些软件,并且该软件包含在VMWare磁盘文件中,即.vmdk文件。 我想要的是某种二进制diff和patch实用程序,以使生成的delta尽可能小。让我从尝试过的真实方法开始,然后指出一些较新的方法 我见过的处理二进制文件的方法 很久以前,人们将旧版本和新版本的二进制文件扩展为临时“文本”文件(每个字节扩展为3个字节:2个十六进制数字和一个换行符)。 然后通过一个旧版本的“diff”(它肯定不能处理二进制文件)运行这两个“text”文件,生成一个补丁文件。 然后,我们将“文本”补

我需要经常发布一些软件,并且该软件包含在VMWare磁盘文件中,即
.vmdk
文件。
我想要的是某种二进制diff和patch实用程序,以使生成的delta尽可能小。

让我从尝试过的真实方法开始,然后指出一些较新的方法

我见过的处理二进制文件的方法

很久以前,人们将旧版本和新版本的二进制文件扩展为临时“文本”文件(每个字节扩展为3个字节:2个十六进制数字和一个换行符)。 然后通过一个旧版本的“diff”(它肯定不能处理二进制文件)运行这两个“text”文件,生成一个补丁文件。 然后,我们将“文本”补丁文件传输到尚未8位干净的通信线路上。 在接收端,将旧的二进制文件扩展为临时文本版本,然后修补旧的文本文件,然后将新的文本文件压缩回二进制文件(将每对十六进制数字压缩为一个字节,并丢弃可能出现的换行符和任何回车符)

最近,我一直在使用(或者在它之上构建的一些实用程序,比如Unison)。 它可以很好地处理任意二进制文件。 我通常会进行实时更新,Unison在本地机器上运行,rsync在文件服务器上运行,并相互交流

无论补丁文件是如何生成的,您都可以使用任何数据压缩实用程序来压缩该文件

据我所知,这种方法应该适用于二进制文件

建议使用

另一个意味着“vimdiff”似乎能够充分处理任意字节

提到了其他一些二进制差分工具

我听说一些基于rsync--“rdiff备份”和“duplicity”的工具允许您创建补丁文件。 然后,接收该修补程序文件的人可以使用它将旧的二进制文件更新为新的二进制文件

最新版本的标准“diff”和“patch”实用程序支持二进制文件。 你试过了吗

可执行文件压缩方面的尖端研究

如果您对在更新可执行文件时使delta文件尽可能小的前沿研究感兴趣,您将想查看一下 斯蒂芬·亚当斯于2009年在铬项目上发表

除此之外,接收补丁的计算机“反汇编”旧应用程序,将所有绝对地址和偏移量转换为符号;然后对反汇编代码进行修补;然后将修补后的代码“重新组装”到应用程序的新版本中。

试试看


我正在寻找一些用于非常大文件(一个LVM逻辑卷及其快照,因为LVM还不支持快照的快照)的二进制差异工具,xdelta适合我

大卫,非常感谢你的善意解释。对于我的问题,经过几次实验后,xdelta成为我的选择