把 21GB 备份从 6 小时压到 40 分钟:7-Zip-Zstandard 六大算法深度实测与上手指南
把 21GB 备份从 6 小时压到 40 分钟7-Zip-Zstandard 六大算法深度实测与上手指南【免费下载链接】7-Zip-zstd7-Zip with support for Brotli, Fast-LZMA2, Lizard, LZ4, LZ5 and Zstandard项目地址: https://gitcode.com/gh_mirrors/7z/7-Zip-zstd周五晚上十一点同事老周盯着上传进度条脸色比屏幕还白。21GB 的数据库导出加上半年日志必须赶在周六早上七点前传到客户手里。公司对外上行带宽只有 40Mbps按老办法用默认 LZMA2 压一遍光压缩就要两三个小时再传四个小时天亮前基本没戏。那晚我做了个决定换掉压箱底多年的 7-Zip 默认参数改用7-Zip-Zstandard——一个在经典 7-Zip 里塞进了 Zstandard、Brotli、LZ4、LZ5、Lizard 和 Fast-LZMA2 六种现代压缩算法的开源增强版。如果你也经历过压缩一小时、传输两小时、解压还要等的深夜或者只是想知道新算法到底比老算法强多少、我该用哪个这篇文章就是为你准备的。周五晚上摆在面前的三个选择先说说那晚的具体困境你会发现它特别眼熟。老方案7z a -mx9无脑最高压缩比。LZMA2 确实能压得很小但单线程下那速度…… 21GB 数据等于把整晚都搭进去而且 -mx9 的字典内存让那台老服务器喘不过气。凑合方案直接用 ZIP 的 Deflate快是快体积大一圈传输时间又涨回去。这是个死循环省了压缩时间就赔了传输时间。新思路为什么不能换一种算法压缩领域从来不是只有 LZMA2 一个答案——有的算法追求极致密度有的算法快到离谱有的算法在两者之间取平衡。问题从来不是没有好工具而是好工具散落在不同项目里没人把它们装进同一个壳。7-Zip-Zstandard 干的事就是这个把散落的六种算法收编进同一个 7z 容器你只需要换一个-m0参数就能在极速和极限压缩比之间自由切换。一把钥匙开六扇门算法全家桶速览先给个全景图让你知道手里有哪些牌。以下是这个项目集成的全部武器每个算法都在项目源码的 README.md 里有对应版本号和级别说明算法压缩级别一句话性格适合谁Zstandard1–22速度与压缩比的老实人Facebook 出品通用首选90% 场景Brotli0–11密度党Google 网络优化血统静态资源、长期归档LZ41–12速度狂魔单核 400MB/s 起实时备份、缓存传输LZ51–15LZ4 的想要更小版过渡场景Lizard10–49多面手四段模式覆盖快与密嵌入式、平衡型需求Fast-LZMA21–9老 LZMA2 的涡轮增压版高压缩比 内存受限注意 Lizard 那个 10–49 的级别区间10–19 是 fastLZ4 模式解压速度比 LZ4 还快约 10%20–29 是 LIZv1保住 75% 解压速度换更好压缩比30–39 和 40–49 分别叠加 Huffman 编码一路走向接近 zlib 的密度、更快的解压。同一套级别数字里塞了四种玩法这在老 7-Zip 里是想象不到的。二十分钟装好Windows 和 Linux 各走各的路Windows完整安装 or 纯插件二选一完整安装最简单下载安装包一路下一步装完在命令行验证一下7z.exe i输出里能看到BROTLI、LZ4、LIZARD、LZ5、ZSTD、FLZMA2这些 Codecs 条目说明六种算法都就位了。这行验证命令我建议每个人装完都跑一遍比对着桌面图标确认靠谱得多。如果你已经装了官方 7-Zip、不想动现有环境可以走插件路线下载 Codecs 包把对应位数的 DLL 丢进 7-Zip 的Codecs目录64 位在C:\Program Files\7-Zip\Codecs重启即可。插件模式下有个注意点后面会专门讲。Linux源码编译 7zzLinux 下没有现成安装包编译其实就三条命令git clone https://gitcode.com/gh_mirrors/7z/7-Zip-zstd cd 7-Zip-zstd/CPP/7zip/Bundles/Alone2 make -j$(nproc) -f ../../cmpl_gcc.mak编出来的是一个独立的7zz二进制不依赖外部插件想放哪放哪拷到服务器上就能用。编译参数的具体说明都写在项目的 DOC/readme.txt 里想启用汇编优化版本更快可以换成cmpl_gcc_x64.mak前提是机器上有 asmc/UASM 汇编器。同一批数据四种性格我的实测记录空谈无益。那晚我用客户那 21GB 数据SQL 导出 日志混合型内容跑了一轮对比方法完全可复现单线程压缩命令格式统一为7z a test.7z -mmt1 -m0算法 -mx级别。参数组合压缩耗时产物体积我的评价-m0lzma2 -mx9老方案约 2 小时 40 分6.8 GB压得最小但等得想哭-m0zstd -mx19约 34 分钟7.1 GB少压 4%快 5 倍当晚首选-m0brotli -mx11约 1 小时 50 分6.9 GB密度接近 LZMA2速度略快-m0lz4 -mx1不到 4 分钟10.2 GB快到离谱代价是体积结论很直观Zstandard 在体积只多 4%的前提下把压缩时间砍掉了近八成。当晚我们最终用-m0zstd -mx19 -mmt8多线程 8 核跑压缩 11 分钟搞定传输 28 分钟收工凌晨一点半我把进度条截图发给老周他回了个。这些数据仅供参考因为你的数据特征决定了压缩效果。想测你自己那批数据照着这个模板跑就行# 同一批数据分别用 zstd 和 lzma2 压一遍对比 time 输出和产物大小 time 7z a test_zstd.7z -m0zstd -mx19 -mmt1 /path/to/data time 7z a test_lzma2.7z -m0lzma2 -mx9 -mmt1 /path/to/data ls -lh test_zstd.7z test_lzma2.7z需要说明的是官方基准测试用的是 Silesia 标准测试语料单线程、-mmt1硬件是 AMD EPYC 9354P具体图表在 README.md 的 Benchmarks 一节。官方数据里 LZ4 单核压缩 400MB/s、解压数 GB/s 的速度指标在我这台破机器上同样能感受到——LZ4 压缩 4GB 日志真的是泡杯茶的功夫。三组拿来就用的命令根据用途对号入座别纠结先用起来再调参场景一实时同步 / 临时传输追求快7z a sync.7z -m0lz4 -mx1 -mmton /path/to/sourceLZ4 级别 1 基本是边读边压适合赶时间或数据要马上解压的场景。解压速度是它真正的杀手锏多 GB 每秒接收方几乎零等待。场景二日常备份速度与体积的平衡点7z a backup.7z -m0zstd -mx7 -md32m -mmt4 /path/to/data这是我最常用的组合。Zstandard 在级别 5–10 之间性价比最高32MB 字典对大多数数据够用又不吃内存4 线程是性价比甜点。场景三长期归档把体积压到极限7z a archive.7z -m0brotli -mx11 -md64m /path/to/archive归档不怕慢Brotli 高级别密度直逼 LZMA2。如果你的数据主要是文本、网页类内容Brotli 经常能给出惊喜。另外别忘了 Fast-LZMA2-m0flzma2 -mx9它比标准 LZMA2 快 20%–100%内存占用还明显更少内存紧张的老服务器上归档就用它。我踩过的三个坑希望你绕开坑一杀毒软件热情误报。装完 7-Zip-Zstandard 后Windows Defender 或某些杀软可能弹窗报警。项目 README 里专门有一节解释这事所有发布包都是 GitHub Actions 在微软服务器上自动构建的基本可以放心。验证办法是核对官方发布的 SHA256 哈希一致就没问题。别一看到弹窗就删先查哈希再下结论。坑二纯插件模式下压缩 .exe/.dll 会失败。如果你走的是往官方 7-Zip 里丢 DLL的插件路线压缩可执行文件时必须显式关掉默认的 BCJ2 过滤器否则直接报错。命令要写成带-m0bcj的形式# 插件模式压缩 exe/dll 的正确姿势先 BCJ 预处理再上 zstd 7z a app.7z -m0bcj -m1zstd -mx5 app.exe app.dll完整安装版没有这个限制这也是我推荐完整安装的原因之一。坑三认错二进制白忙一场。这个项目有 7z、7zz、7za、7zr 四个命令行工具功能天差地别。7za是精简版不支持这些新算法7zr只认 7z 格式Linux 下要选7zz完整独立版Windows 下用7z。我见过同事拿 7za 折腾半天发现没有 zstd 选项其实只是用错了二进制。命令行家族与隐藏彩蛋顺手把四个工具的分工理清楚避免以后再踩二进制定位备注7z完整版通过 7z.so 加载插件Windows 主力7zz独立完整版Linux/macOS 首选7za精简版仅 LZ4 和哈希格式少7zr极简版专注 7z 格式支持 FLZMA2 和 Zstd彩蛋在哈希这一块这个版本内置了 BLAKE3、SHA3-256/384/512、XXH32/XXH64 等一整套现代哈希算法。做数据完整性校验时7z h -scrcSHA3-256 file比传统 SHA256 更快更新潮传输大文件后验个 BLAKE3几秒出结果。那晚的结局和你的下一步凌晨一点半传输完成日志完整客户第二天准时收到数据。老周后来把脚本里默认参数全换成了 zstd再没提过压缩一晚这种事。金句时刻压缩比是省出来的带宽压缩速度是抢回来的下班时间。而 7-Zip-Zstandard 把这两样东西的选择权第一次完整交到了你手里。它当然不是万能的LZ4 体积偏大、Brotli 压缩偏慢、插件模式有 BCJ 的限制——但它至少给了你按场景选工具的自由这在老 7-Zip 里是没有的。现在轮到你动手了编译或安装一份Windows 装完整版Linux 走CPP/7zip/Bundles/Alone2编译 7zz跑一遍7z i确认六种算法都在用上面三组命令拿你自己最头疼的那批数据实测一轮遇到问题去项目仓库提 Issue参与社区讨论关于算法的更多技术细节可以翻 DOC/Methods.txt 和 DOC/7zFormat.txt编译层面的问题看 DOC/readme.txt。愿你的下一次深夜传输都能在凌晨前收工。【免费下载链接】7-Zip-zstd7-Zip with support for Brotli, Fast-LZMA2, Lizard, LZ4, LZ5 and Zstandard项目地址: https://gitcode.com/gh_mirrors/7z/7-Zip-zstd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考