zstd是高效无损压缩工具,Linux下可通过apt/dnf/pacman安装或源码编译;支持多线程压缩(-T)、分级压缩(-1至-22)及安全解压(unzstd或zstd -d),但解压默认单线程,且不兼容gzip参数风格。

zstd 不是“替代 gzip 的新玩具”,而是你手边那个一直没被启用的加速器——只要系统装了,命令换一个参数,压缩/解压速度就能翻倍,还不用改流程。
Linux 下安装 zstd 的三种可靠方式
不同发行版的包管理器早已内置 zstd,直接装就行;源码编译只在需要自定义或调试时才必要。
- Ubuntu/Debian 系统:运行
sudo apt install zstd即可,无需额外依赖 - RHEL/CentOS 8+ 或 AlmaLinux:用
sudo dnf install zstd(yum在旧版中也可用,但推荐dnf) - Arch/Manjaro:执行
sudo pacman -S zstd - 如果必须从源码构建(比如要启用
--with-libdeflate加速),则需先装build-essential、make和git,再执行:git clone https://github.com/facebook/zstd.git cd zstd make && sudo make install
默认安装路径是/usr/local/bin/zstd,记得确认$PATH是否包含该目录
注意:某些最小化安装的容器镜像(如 Alpine)默认不带 zstd,需用 apk add zstd;conda 环境则可用 conda install zstd。
zstd 命令行压缩与解压的实际写法
zstd 默认行为是“压缩到同名 .zst 文件”,不覆盖原文件,也不静默失败——这点比 gzip 更安全。
- 基本压缩:
zstd logfile.txt→ 输出logfile.txt.zst - 指定等级(推荐从
-3开始试):zstd -3 access.log -o access.log.zst - 解压用
unzstd最稳妥:unzstd backup.tar.zst
或统一用zstd -d:zstd -d data.json.zst -o data.json - 查看压缩信息:
zstd -l file.zst,能读出压缩级别、原始大小、字典 ID(如有)
常见错误:
- 忘加
-o且输入是管道时,zstd会把压缩结果打到 stdout,容易误以为“没输出”——此时要用-o或重定向> out.zst - 对已压缩过的二进制文件(如 JPEG、MP4)再压
zstd,体积几乎不变,还白耗 CPU
用多线程真正榨干 CPU:-T 参数怎么设才有效
zstd 的 -T 不是“开几个线程就快几倍”,它只对大文件(>10MB)或管道流式输入明显生效。
-
-T0:自动使用全部逻辑核,适合打包压缩场景(如tar -cf - dir/ | zstd -T0 -o archive.tar.zst) -
-T2或-T4:更可控,避免在共享服务器上抢光资源 - 错误用法:
zstd -T0 small.log—— 小文件加多线程反而因调度开销变慢
验证是否真用了多核:压缩时运行 htop,观察多个 zstd 进程是否并行跑;或者用 time zstd -T0 bigfile.bin -o bigfile.bin.zst 对比 -T1 耗时。
注意:unzstd 和 zstd -d 默认不支持多线程解压,除非用 --long 或加载字典,否则解压始终单线程——这是设计使然,不是 bug。
和 gzip 混用时的关键兼容点
你不需要全盘替换 gzip,但得知道哪些地方不能“无脑换”。
-
tar归档链式调用没问题:tar -I zstd -cf archive.tar.zst dir/和tar -I gzip -cf archive.tar.gz dir/行为一致 - 但
curl默认不识别.zst编码,HTTPContent-Encoding: zstd需服务端显式支持(Nginx 1.19+、Caddy 2.5+ 才行) - 日志轮转工具(如
logrotate)若硬编码调用gzip,就不能直接塞zstd进去——得改compresscmd和uncompresscmd配置项 -
zstd压缩的文件,gzip -t会报错;反过来也一样。验证完整性请用zstd -t file.zst
最易被忽略的一点:很多脚本里写的是 gunzip,而 unzstd 并不兼容其参数风格(比如不接受 -c 输出到 stdout 后续管道),这时得用 zstd -d -c 替代。
zstd 的压缩级别数字越大,越吃 CPU、越慢,但解压速度几乎不受影响;而它的多线程只作用于压缩阶段,且对小文件无效——这些边界条件,比语法本身更决定你最终能不能提效。











