用于虚拟机映像的二进制差异和补丁实用程序[关闭]

2023-11-27

我需要经常发布一些软件,并且该软件包含为VMWare磁盘文件,即.vmdk文件。 我想要的是某种二进制差异和补丁实用程序,以使生成的增量尽可能小。


让我从经过验证的方法开始,然后指出一些更新的方法。

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

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

最近,我一直在使用rsync(或在其之上构建的一些实用程序,例如 Unison)。 它可以很好地处理任意二进制文件。 我通常会进行实时更新,Unison 在本地计算机上运行,​​rsync 在文件服务器上运行,彼此来回通信。

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

据我所知,应该使用二进制文件的方法

StackOverflow:“如何为二进制差异输出文件创建 PATCH 文件”建议使用bsdiff.

Another StackOverflow问题暗示“vimdiff”似乎可以充分处理任意字节。

StackOverflow:“有用的二进制差异工具”提到了其他一些二进制差异工具。

我听说一些基于 rsync 的工具——”rdiff”和“rdiff-backup”和“口是心非”——允许您创建补丁文件。 然后,收到该补丁文件的人可以使用它将旧的二进制文件更新为新的二进制文件。

The 维基百科声称标准“diff”和“patch”实用程序的最新版本支持二进制文件。 你尝试过吗?

可执行文件压缩的​​前沿研究

如果您对更新可执行文件时使增量文件尽可能小的前沿研究感兴趣,您将需要查看“小胡瓜的工作原理”作者:Stephen Adams,2009 年,Chromium 项目。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于虚拟机映像的二进制差异和补丁实用程序[关闭] 的相关文章

  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • 如何使用 git 比较不​​在存储库中的两个文件

    我想比较两个不在任何 git 存储库中的 css 文件 git中有这样的功能吗 git的 diff 比标准 Unix 更实用diff 我经常想这样做 并且由于这个问题在谷歌上排名很高 所以我希望这个答案出现 这个问题 如何使用git dif
  • 从 r 中的多个列表创建二进制(存在/不存在)数据矩阵

    我有一系列不同长度的单独变量列表 字符串 我想将它们组合成一个数据帧以形成存在 1 不存在 0 矩阵 鉴于它们的长度不同 我什至不知道如何创建初始数据框 这是我的例子 data1 lt c a b c d e f data2 lt c e
  • 将双精度转换为二进制表示形式?

    我尝试将双精度数转换为其二进制表示形式 但使用此Long toBinaryString Double doubleToRawLongBits d 没有帮助 因为我有大量数字 Long 无法存储它们 即2 900 Long toBinaryS
  • git apply 不对文件进行任何更改

    我必须对我的存储库应用补丁并正在运行 git apply directory PWD xxxxx patch 由于我不会详细讨论的原因 我无法使用git am在这种情况下 我需要使用目录标志 吉特告诉我 gt git apply direc
  • 有什么方法可以将自定义差异工具与cleartool/clearcase一起使用?

    我想在使用 Clearcase 快照视图时使用我自己的差异 据我所知 运行时无法指定 diff 工具 cleartool diff 所以我想我可以运行类似的东西 mydiff
  • 带有二进制数据的 Bash echo 命令?

    有人可以解释一下为什么这个脚本有时只返回十六进制字符串表示形式的 15 个字节吗 for i in 1 10 do API IV openssl rand 16 API IV HEX echo n API IV od vt x1 w16 a
  • Lisp 中的十进制到二进制 - 制作非嵌套列表

    当达到我的递归情况时 我使用list将未来结果附加到当前结果 但由于递归 我最终得到一个嵌套列表 当我有一个导致递归超过五次的数字时 这会导致错误 任何想法如何我可以在一个简单的非嵌套列表中获得结果 例如 CL 用户 100 8 gt BI
  • 如何制作可修补/可更新的应用程序?

    我已经完成了一个学生项目 该项目从互联网上的 xml 文件中提取数据并将其保存到数据库并显示 我以几种不同的方式使用这些数据 例如在主页上显示在另一个选项卡中作为表格 并创建一些图表 我通过制作 5 个不同的类来完成这一切 每个类提取不同类
  • 将 SQL Server varBinary 数据转换为字符串 C#

    我需要帮助弄清楚如何转换来自SQL服务器表列设置为varBinary 最大 转换为字符串以便将其显示在标签中 这是在C 我正在使用数据读取器 我可以使用以下方式提取数据 var BinaryString reader 1 我知道该列包含之前
  • 将二进制数转换为包含每个二进制数的数组

    我试图将二进制值转换为每个 1 0 的列表 但我得到默认的二进制值而不是列表 我有一个字符串 我将每个字符转换为二进制 它给了我一个列表 其中每个字符都有一个字符串 现在我试图将每个字符串拆分为值为 0 1 的整数 但我什么也得不到 if
  • Python 中的二进制相移键控

    我目前正在编写一些代码 以使用音频转换通过激光传输消息 文件 和其他数据 我当前的代码使用 python 中 binascii 模块中的 hexlify 函数将数据转换为二进制 然后为 1 发出一个音调 为 0 发出不同的音调 这在理论上是
  • Python:二进制/十六进制字符串转换?

    我有一个同时包含二进制和字符串字符的字符串 我想先将其转换为二进制 然后转换为十六进制 字符串如下 lt 81 gt Q lt 81 gt Q G Q A S A V lt 83 gt Cd lt 80 gt lt 99 gt N A j
  • Haskell 二进制解析

    我一直在尝试在 haskell 中实现一个协议解析器 而且我对这门语言还很陌生 特别是当涉及到 monad 时 我一直在使用binary 0 5 0 2 并描述了协议的标头和所有有效负载 我想要解析的消息如下所示 header payloa
  • NS-2.34 DYMO 贴片

    我正在尝试将 DYMO 路由协议添加到 NS 2 34 但它不起作用 我正在关注这个教程 https khaledben wordpress com 2011 04 16 patching dymo um in ns 2 https kha
  • 从字符串列表创建 TfRecords 并在解码后在张量流中提供图形

    目的是创建 TfRecords 数据库 给定 我有 23 个文件夹 每个文件夹包含 7500 个图像 以及 23 个文本文件 每个文件有 7500 行描述单独文件夹中 7500 个图像的特征 我通过以下代码创建了数据库 import ten
  • 将浮点数 1864.78 转换为二进制和 IEEE 格式

    我一直在尝试将 S P 500 的值 今天为 1864 78 转换为它在内存中以 IEEE 单精度格式表示的方式 转换小数点左边 1864 很容易 11101001000 但如何获得十进制 78 的二进制表示形式呢 我尝试使用该技术 但它会
  • 从 Nodejs 提供二进制/缓冲区/base64 数据

    我在从节点提供二进制数据时遇到问题 我开发了一个名为的节点模块节点说话它执行 TTS 文本到语音 并返回 Base64 编码的音频文件 到目前为止 我这样做是为了转换base64到缓冲区 二进制文件 然后提供它 var src Base64
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 语义差异实用程序[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试找到一些语义差异 合并实用程序的好例子 比较源代码文件的传统范例是通过比较行和字符来工作的

随机推荐

  • 迭代未注册的加载项 (.xla)

    我需要帮助 了解如何迭代当前打开的 Excel 加载项文件 xla 尚未使用 Excel 注册Tools gt Add ins菜单路径 更具体地说 我对未出现在加载项对话框中但具有的任何工作簿感兴趣ThisWorkbook IsAddin
  • 如何在没有 matlabs 数据库工具箱的情况下从 matlab 访问 postgresql 数据库?

    我已经尝试使用pgmex 不幸的是它不能与 libpq5 一起工作 matlab 立即崩溃 要在不使用数据库工具箱的情况下从 matlab 连接到 postgres 请执行类似以下操作 Add jar file to classpath e
  • 未使用的方法和属性对库或可执行文件的影响

    我正在尝试为 C NET 创建源代码生成器 生成永远不会被调用的属性或方法会导致我的代码运行速度变慢吗 为不使用的库插入 using 语句怎么样 我假设编译器足够聪明 不会构建未使用的 using 语句 但它无法了解属性和方法 因为它们co
  • 使用 Telethon 发送 Telegram 消息:某些实体参数有效,其他参数无效?

    我正在使用 Telethon 的发信息功能向各种聊天发送消息 有时 目的地是另一个用户 只是常规的一对一聊天 有时是一个组 有时是一个超级组 有时是一个频道 我是其中的管理员 如果我理解正确的话 语法应该是 client send mess
  • 为什么PHP不支持多线程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我到处都读到 PHP 不支
  • 如何使用Python有效地将解析后的XML文档存储在MySQL数据库中?

    以下是 XML 文件 book xml
  • TFS 2013:同一台机器上的多个构建控制器

    我希望我们可以在同一台机器上使用多个构建控制器 因为我们有许多团队项目集合 但它们不会同时使用 因此这里不存在真正的性能问题 并且我们的大多数构建服务器都不会长时间使用 我知道可以使用 TFS 2010 和 TFS 2012 来做到这一点
  • 提升asio超时[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 boost asio 中设置阻塞套接字的超时 我之前读过一些关于超时的条目 但我不明白 我想要一个定义的连接超时 连接代码如下所示 try boost asio ip tcp resolver
  • 如何将复选框作为 dataGridView 的 ColumnHeader

    我正在 C VS2005 中开发一个窗口应用程序 我有一个 dataGridView 其中第一列有复选框 现在我希望列标题也成为一个复选框 如果我选择列中的所有复选框 则应选择该复选框 我怎样才能做到这一点 我提到了代码项目链接 但如果我使
  • 如何获得以赫兹为单位的 DFT/FFT 输出频率?

    我想开发音符检测器作为我的学位项目 并且我想从头开始 我已经为 wav 文件编写了代码 该文件从该音频音乐文件中提取所有信息并给出振幅 然后我编写了 DFT 代码 它以复数形式输出 其中轴 实数 虚数 之一是幅度 幅度 另一个轴是相位 现在
  • 使用 xmlSerializer.Serialize 和 IEnumerable 对象序列化对象

    我有一个对象 其中包含一个定义为 IEnumerable 的对象 即 Serializable XmlRoot MyObject public class MyObject XmlAttribute public string Name g
  • Jackson:如何在不修改 POJO 的情况下向 JSON 添加自定义属性

    我正在为我的应用程序开发一个 REST 接口 使用 Jackson 将我的 POJO 域对象序列化为 JSON 表示形式 我想自定义某些类型的序列化 以向 POJO 中不存在的 JSON 表示添加其他属性 例如添加一些元数据 参考数据等 我
  • 如何防止 Google Colab 断开连接?

    有没有办法以编程方式阻止谷歌合作实验室超时断开连接 以下描述了笔记本电脑自动断开连接的情况 Google Colab 笔记本的空闲超时为 90 分钟 绝对超时为 12 小时 这意味着 如果用户超过 90 分钟没有与其 Google Cola
  • 为什么 x86_64 CPU 上没有通用寄存器的乘加融合?

    在 Intel 和 AMD x86 64 处理器上 SIMD 矢量化寄存器具有特定的融合乘加功能 但通用 标量 整数 寄存器don t 你基本上需要先乘法 然后加法 除非你可以将东西放入一个lea 这是为什么 我的意思是 它是否毫无用处以至
  • iOS 9 Facebook SDK 登录/分享

    我在 iOS 9 上使用最新的 Facebook SDK 4 6 时遇到了问题 为了授权用户 我使用 FBSDKLoginManager 我尝试过这样设置 loginManager loginBehavior FBSDKLoginBehav
  • 使用 python 将分隔字符串列表转换为树/嵌套字典

    我正在尝试转换点分隔字符串的列表 例如 one two three four one six seven eight five nine ten twelve zero 进入一棵树 嵌套列表或字典 任何易于遍历的东西 真实数据恰好有1到4个
  • powershell 过滤 csv

    由于我是 Powershell 新手 因此寻求有关最佳实践的帮助 我有一个 csv 文件 我想过滤掉 csv 中的每一行 但包含 未安装 的行除外 然后 我想根据包含计算机列表的单独 csv 文件过滤这些结果 并排除包含匹配项的任何行 任何
  • 关闭浏览器窗口后是否有可能如何发送 AJAX? [复制]

    这个问题在这里已经有答案了 关闭浏览器窗口后是否有可能如何发送AJAX 我有一个使用 JavaScript jQuery 进行移动的浏览器游戏 如果我在每次移动后发送 Ajax 这对服务器来说会很困难 所以我想在用户关闭窗口 或书签 时发送
  • 在 C# 中获取重叠的正则表达式匹配

    我有正则表达式1 0 1和测试字符串1000010001 我想要 2 场比赛 但我发现只找到 1 场 var regex new Regex 1 0 1 var values regex Matches intBinaryString va
  • 用于虚拟机映像的二进制差异和补丁实用程序[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要经常发布一些软件 并且该软件包含为VMWare磁盘文件 即 vmdk文件 我想要的是某种二进制差异和补丁实用程序 以使生成的增量尽可能小 让我