有什么压缩软件能差异压缩

329 天前
 sungo

有一堆 PDF ,单个不大,里面就一些内容更改了。用了 git gc 压缩后,900m 的共计 700 个文件,最后能压缩到 18M 。但是 git 压缩毕竟不是正统,有没有差异压缩的软件能实现这个特定的文件压缩

1220 次点击
所在节点    问与答
6 条回复
oiken
329 天前
我四年前做安卓时做了类似功能的软件,把两百个只是内置渠道号不同的 apk ,对比差异压缩成一个文件,上传到服务器,再服务器解压缩还原成两百个 apk 。如果你需要,请站内联系我,或发邮件到邮箱 oiken @ qq.com

以下是软件帮助信息:

Usage: zipsame [-hvVu] [-D dirPath] [-d dirName] [-Z zipFilePath] [-z zipFileName] [-b blockSize] [-c compareFileName]

Options:
-D dirPath
设置 dirPath 作为文件夹的路径,有就忽略 d 提供的文件夹名字
-V verbose
设置 verbose 输出日志,默认不输出
-Z zipFilePath
设置 zipFilePath 作为 zip 文件的路径,有就忽略 z 提供的 zip 文件名字
-b blockSize
设置 blockSize 作为文件块的切分大小,最小为   (default 32768)
-c compareFileName
设置 compareFileName 作为源文件夹里参照物文件的名字,默认为 d/D 文件夹里第一个有文件名的文件
-d dirName
设置 dirName 作为当前目录下的文件夹名字
-h 压缩示例: ./zipSame -D /xxx/ApkDir -z /xxx/ApkDir.zip
解压示例: ./zipSame -u -z /xxx/ApkDir.zip -D /xxx/ApkDir-unzip
-u 解压缩文件,默认是压缩文件夹
-v 版本信息
-z zipFileName
设置 zipFileName 作为当前目录下的 zip 文件
bihui
329 天前
差异压缩是啥?
jim9606
328 天前
git 存储每个版本的文件都是整份存的,只是会用 deflate 压缩一下,这也是为啥 git 不适合管理大型二进制文件。
要不你考虑下把这堆 pdf 全放进一个固实压缩的 7z 包里,字典大小调大些,说不定 LZMA2 就帮你找出重复块来了。


@oiken
这种方案对付 v1 签名包是可行的,v2/v3 签名的会比较麻烦,要求确定性的 zip 打包器。允许破坏签名的无视吧。
oiken
328 天前
@jim9606 好的,受教了
body007
328 天前
@jim9606 好思路,调教压缩软件找到重复数据实现高压缩比。👍
sungo
328 天前
@jim9606 用这个 lzma 压缩后,发现只有 8m 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1012193

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX