V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sungo
V2EX  ›  问与答

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

  •  
  •   sungo · 298 天前 · 1185 次点击
    这是一个创建于 298 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    6 条回复    2024-01-29 17:35:24 +08:00
    oiken
        1
    oiken  
       298 天前
    我四年前做安卓时做了类似功能的软件,把两百个只是内置渠道号不同的 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
        2
    bihui  
       298 天前
    差异压缩是啥?
    jim9606
        3
    jim9606  
       297 天前
    git 存储每个版本的文件都是整份存的,只是会用 deflate 压缩一下,这也是为啥 git 不适合管理大型二进制文件。
    要不你考虑下把这堆 pdf 全放进一个固实压缩的 7z 包里,字典大小调大些,说不定 LZMA2 就帮你找出重复块来了。


    @oiken
    这种方案对付 v1 签名包是可行的,v2/v3 签名的会比较麻烦,要求确定性的 zip 打包器。允许破坏签名的无视吧。
    oiken
        4
    oiken  
       297 天前 via Android
    @jim9606 好的,受教了
    body007
        5
    body007  
       297 天前
    @jim9606 好思路,调教压缩软件找到重复数据实现高压缩比。👍
    sungo
        6
    sungo  
    OP
       297 天前 via Android
    @jim9606 用这个 lzma 压缩后,发现只有 8m 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2382 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:10 · PVG 00:10 · LAX 08:10 · JFK 11:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.