【问题标题】:What would be a good algorithm for patching binary files on linux什么是在Linux上修补二进制文件的好算法
【发布时间】:2021-01-02 19:30:37
【问题描述】:

我正在尝试通过为几乎相似的二进制文件创建补丁来减少数据传输到我的嵌入式 linux 设备。 我的设备有内存限制,因此对于大约 36-60mb 的二进制大小,我的目标无法承受像 bsdiff 和 bspatch 这样的重算法。我想知道具有最佳算法的命令来区分和修补文件,这些文件可以使用最少的内存量。我在这里也附上了 df 和 free 的输出。

【问题讨论】:

  • 您需要明确指定您有哪些限制(如内存量),因为大多数人不认为bsdiffxdelta 是用于此目的的不寻常工具。跨度>
  • 我无法将 bspatch 用于 35 mb 文件。我猜 bsdiff 会占用更多内存,大约是文件大小的 17 倍。所以我正在寻找一种更便宜的算法,即使它需要很多时间来修补。
  • 如何将补丁卸载到具有 512MB RAM 的 10 美元 Raspberry Pi 零 W 上?
  • 它是旧设备,无法更改硬件。因此,我正在寻找一种可以在约束范围内工作的算法。
  • @bk2204 问题不在于二进制文件不存在。问题是什么算法在 linux 下可以使用最少的内存。 Rdiff 也可能是一个解决方案,但我不知道它是否也需要太多内存。 Bsdiff 详细信息在此链接上,它消耗大量内存,可能不适合嵌入式世界。 daemonology.net/bsdiff

标签: linux shell memory embedded-linux patch


【解决方案1】:

为了比较 b/w xdelta 和 bsdiff,bsdiff(mbsdiff) 在增量大小和内存消耗方面似乎更有效。

【讨论】:

    【解决方案2】:

    事实证明,rdiff 在内存方面使用了更好的算法,但创建的补丁(delta)文件比 bsdiff 或 xdelta3 中的任何一个都大。 xdelta3 创建最小的补丁文件,但创建补丁比 rdiff 使用更多的内存。因此,就创建的补丁大小而言,我们有 -- xdelta3

    在应用补丁时的内存消耗方面,我们有 -- rdiff

    希望它能帮助人们优化网络数据传输!!!

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 2012-05-26
      • 2011-10-14
      • 2018-03-25
      • 2017-02-27
      • 2010-11-01
      • 2015-08-26
      • 1970-01-01
      • 2016-03-19
      相关资源
      最近更新 更多