当前位置: 首页 > news >正文

如何让 7-Zip 用上 Zstandard?7-Zip-Zstandard 安装配置与算法选型全解

如何让 7-Zip 用上 Zstandard?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

"打包发布"这件事,你一定经历过这样的时刻:几百 MB 的产物目录,7z 的 LZMA2 单线程压了二十分钟,CI 流水线卡在这一步,硬盘风扇转得像是要起飞;换成 LZ4 倒是快了,可压缩率掉得让人心疼。速度与压缩比之间的这道二选一,传统 7-Zip 一直逼你站队。7-Zip-Zstandard(简称 7-Zip ZS)把这道题改成了多选题:它在经典 7-Zip 的外壳里,内置 Zstandard、Brotli、LZ4、LZ5、Lizard 与 Fast-LZMA2 六种现代压缩算法,让你按场景挑引擎,而不是被引擎绑架。

先用三个问题定位:它解决什么、强在哪、边界在哪

它解决了什么?主流的 7-Zip 只带 LZMA/LZMA2 这类老牌算法,而 Facebook 的 Zstandard、Google 的 Brotli 这些"又快又小"的新算法,官方 7-Zip 至今没有合并进去——社区提过合并请求,被官方婉拒。7-Zip ZS 正是补上这个缺口:同样的 7z 容器、同样的右键菜单和命令行语法,只是多了一批现代算法可以调用。

它与同类方案的关键差异在哪?它不重新发明轮子。Zstandard v1.5.7、Brotli v1.2.0、LZ4 v1.10.0 等算法的 C 源码直接内嵌在仓库的C/zstd/C/brotli/目录下,由作者 Tino Reichardt 统一维护整合,多线程支持来自独立的 zstdmt 库。换句话说,你拿到的是官方 7-Zip 26.02 的稳定内核,加上-m0=zstd-m0=lz4这类与原有语法完全一致的换引擎开关。

它的边界在哪?以插件形式接入时,只能创建.7z容器,不能直接生成.zst.lz4这类独立文件(完整版安装则没有此限制);压缩 exe/dll 时需要显式改用-m0=bcj而不是默认的 bcj2 过滤器。另外 RAR 压缩依旧不可用——那是 unRAR 许可证画的红线,所有 7-Zip 系工具都一样。

五分钟上手:安装、验证与编译

Windows 用户有两条路,按你的现状选一条:

  • 已有官方 7-Zip:下载Codecs.7z,把zstd-x64.dll等六个 DLL 按系统位数放进C:\Program Files\7-Zip\Codecs\(32 位对应C:\Program Files (x86)\7-Zip\Codecs\),重启 7-Zip 即可。它不动你的 GUI 和右键菜单,纯粹是插件。
  • 想一步到位:运行完整安装包,会一并带上增强版文件管理器与资源管理器右键菜单,右键"添加到 xx.7z"会沿用上一次压缩对话框的全部参数。

装完用一条命令验证:7z.exe i。输出里Codecs:一栏应该能看到ZSTDBROTLILZ4LZ5LIZARDFLZMA2六行,外加一串新增哈希算法(BLAKE3、XXH64 等)。

Linux/macOS 用户直接编译独立二进制7zz

git clone https://gitcode.com/gh_mirrors/7z/7-Zip-zstd cd 7-Zip-zstd/CPP/7zip/Bundles/Alone2 make -j -f ../../cmpl_gcc.mak # 无汇编版,产物 7zz make -j -f ../../cmpl_gcc_x64.mak # x86-64 优化版,需先装 asmc 汇编器

常用配置:一个参数换一个引擎

压缩参数全部走-m0=指定主算法、-mx指定级别,其余语法和 7-Zip 完全一致:

7z a app.7z -m0=zstd -mx5 # 日常平衡:Zstandard 级别 5 7z a fast.7z -m0=lz4 -mx1 # 要速度:LZ4 级别 1 7z a small.7z -m0=brotli -mx9 # 要体积:Brotli 级别 9 7z a tiny.7z -m0=flzma2 -mx9 # 高压缩比、低内存:Fast-LZMA2

注意各算法级别上限不同:Zstandard 是 1–22,Brotli 是 0–11,LZ4 是 1–12,LZ5 是 1–15,Lizard 是 10–49(分段含义不同),Fast-LZMA2 是 1–9。级别超界会直接报错,别把其他工具的习惯数值照搬过来。多线程用-mmt-mmt=on自动按核心数分配,-mmt=8手动指定 8 线程。

进阶技巧:管道流与 BCJ 预处理

管道是它最实用的隐藏技能——不解包就能查看 zstd 压缩的 tar 内容:

7z x -so test.tar.zst | 7z l -si -ttar

压缩可执行文件时,-mx1以上会自动启用 BCJ 预处理器(把 x86 跳转地址改写成相对偏移,exe/dll 的压缩率显著提升)。完整版开箱即用;插件模式则必须显式写成-m0=bcj -m1=zstd -mx1这种双链形式,因为插件环境里没有 bcj2 这个多流过滤器。

算法对照表:六种引擎的取舍准则

以下数据取自仓库 README 的官方描述,可作为选型依据:

算法级别范围速度画像压缩比适合场景
Zstandard1–22实时压缩,解压极快,速度/压缩比可宽范围调节中上通用归档、网络传输
Brotli0–11与 deflate 速度相当更高,更密静态资源、长期存储
LZ41–12单核压缩 400 MB/s,解压可达数 GB/s实时备份、游戏资源
LZ51–15比 LZ4 慢比 LZ4 好已被 Lizard 取代
Lizard10–49解压 1000 MB/s 以上,10 级段比 LZ4 快约 10%想"快且不小"的平衡
Fast-LZMA21–9比标准 LZMA2 快 20–100%(级别 5 以上)最高(略低于 LZMA2)高压缩比且内存受限

一句话判断准则:解压速度优先选 LZ4;压缩比优先选 Fast-LZMA2 或 Brotli;两头都要、还想要随时可调,选 Zstandard;内存紧张却要高压缩比,选 Fast-LZMA2——它每线程的附加内存比标准 LZMA2 少得多。

实战:让 CI 打包从半小时缩到几分钟

回到开头的发布场景。你的流水线每天要把含二进制和资源的产物目录打成 7z,之前 LZMA2 单线程要压二十多分钟。换成 Zstandard 多线程,一条命令解决:

#!/bin/bash # 产物打包:Zstandard 级别 7 + 自动多线程 + 保留时间戳 7z a release-$(date +%Y%m%d).7z \ -m0=zstd -mx7 -mmt=on -mtc=on \ dist/

体感变化是质变的:压缩耗时从几十分钟级降到分钟级(实际取决于核心数与磁盘 IO),体积只比 LZMA2 略大一点。如果产物里 exe/dll 占大头,把-mx7提到-mx9,BCJ 预处理会让可执行文件再小一截。解压端也没有额外负担——7z 容器格式与官方完全一致,接收方装同样的插件或完整版即可解开。

新手最容易踩的六个坑

1. 杀毒软件报毒?大概率误报。发布版由 GitHub Actions 在微软数据中心即时构建,可先对比 SHA256 校验和自证;官方维护了一份误报清单(issue #451),处理方式是向杀毒厂商申诉。

2. 插件模式压 exe 报错?插件版没有 bcj2 过滤器,压二进制必须写-m0=bcj -m1=zstd -mxN双链形式。

3. 插件版不能生成 .zst 独立文件?对,插件只覆盖.7z容器内的编解码。要直接产出.zst/.lz4文件,请用完整版或7zz

4.-mx22报参数无效?级别上限因算法而异(见对照表)。混用前先查表,Zstandard 的 22 在 Brotli 那儿是 11。

5. 解压别人的 .zst 提示格式未知?先跑7z i确认 DLL 被正确加载(Libs:一栏应列出Codecs\zstd-x64.dll),并核对 DLL 位数是否与 7-Zip 安装一致。

6. Linux 编译后性能一般?cmpl_gcc.mak是无汇编版,能编译但发挥不出全部性能;想要最快的 x86-64 二进制,先装 Asmc 汇编器再走cmpl_gcc_x64.mak。仓库DOC/目录下的7zFormat.txtMethods.txt以及C/CPP/源码都是排查问题的第一手资料。

下一步:从验证到改造你的流程

7-Zip-Zstandard 的价值一句话讲完:它把 7-Zip 的稳定容器,和现代压缩算法的速度与压缩比,装进了同一个二进制。它适合三类人——被打包时间卡脖子的 CI 维护者、追求压缩比又抠内存的运维、以及想用一套命令在多平台压所有格式的开发者。

接下来建议你按这个顺序行动:

  1. 按"五分钟上手"装好,用7z i验证六个算法全部就位;
  2. 拿你自己的数据跑一遍对照表(-m0=换算法、-mx换级别);
  3. 把实战脚本改造成你的备份或发布流程;
  4. 遇到问题先查仓库 README 与DOC/文档,再决定是否提交 issue 或贡献代码。

算法的账,跑一次自己的数据最清楚——现在就去试。

【免费下载链接】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),仅供参考

http://www.cnnetsun.cn/news/4104352.html

相关文章:

  • 比特币交易签名实战:token-core-android 的 UTXO 模型、找零与多输入签名
  • 提升 Web 应用性能:如何用 AmplifyJS 实现 AJAX 请求缓存
  • Scroll三层架构深度解析:结算层、排序层与证明层如何协同工作
  • 什么是 PP-OCRv5_server_det?一文读懂 PPHGNetV2 + LKPAN + PFHeadLocal 文本检测架构
  • AIPND项目结构深度解析:从线性代数到图像分类的10大学习模块
  • SceneJS新手避坑手册:10个最常见的WebGL开发错误与解决方案
  • 向量检索中上下文与工具的分工
  • Qwen3.8-27B-Ridge-GGUF API开发指南:如何用llama-server快速搭建OpenAI兼容服务?
  • Bluto 源码解析:DNS 侦察工具的模块化架构与核心实现原理
  • 同城招聘求职小程序系统开发方案
  • instagram-location-search × instagram-scraper联动实战:批量下载指定地点全部照片
  • 全向轮机器人运动学:雅可比矩阵如何连接轮速与世界速度?
  • Templater 插件入门指南:让 Obsidian 模板学会自动填表
  • 中文输出优化攻略:如何调教LFM2.5-1.2B-Instruct-6bit说出地道中文
  • NeoEloquent 软删除详解:如何安全地删除图数据库节点
  • 磁盘空间告急?免费开源工具 czkawka 帮你快速清理重复文件、相似图片与空文件夹
  • 图像格式转换如何一键搞定?oiiotool入门实操全指南
  • 告别丑终端与视觉疲劳:iTerm2配色方案完整指南,450+主题轻松打造专属工作台
  • Bluto性能调优:3个技巧缩短子域名爆破扫描时间
  • Teable日历视图:3个关键动作,把排期从电子表格搬进可拖拽的调度台
  • 计算机毕业设计之基于Python的宠物托管系统
  • 保姆级Kindle漫画转换指南:我用KCC把漫画装进墨水屏的完整旅程
  • 游戏串流入门到精通:用Sunshine自建串流服务器,低配设备也能玩3A大作
  • 奇点智能大会从个人提效到团队级 AI 原生研发流程:组织面对的 5 个具体挑战
  • 零基础ExplorerPatcher安装教程:让Windows 11找回Windows 10经典体验
  • Harper 语法检查工具完整指南:离线、开源、毫秒级反馈的英文写作助手
  • HomeAssistant 蓝牙室内定位终极指南:Bermuda 从零到一实现房间级追踪
  • 【单片机毕业设计】基于 DHT11 传感器的单片机温湿度智能预警系统设计 基于 STM32 或 51 单片机的温湿度参数可调报警装置与 APP 开发(024403)
  • 写作压力小了!2026年最值得拥有的专业降AI率软件
  • AI Agent 是怎么选中正确 Skill 的?一文拆解“意图理解→向量检索→LLM 决策”全流程