zstd 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
zstd——压缩与归档命令族(见压缩、归档与备份命令族)。它正快速取代 gzip/xz,成为"又快又小"的新选择。
zstd(Zstandard)是 Facebook 开源的压缩算法与工具,特点是压缩率接近 xz、速度却快得多,解压极快,还支持并行和流式处理。
一、基本用法
bash
zstd file.log # 压缩成 file.log.zst(默认级别 3)
zstd -d file.log.zst # -d 解压
zstd -19 file.iso # -19 更高压缩率(更慢)
zstd -1 file.txt # -1 最快(压缩率低些)
zstd -k file # -k 保留原文件(默认会删掉原文件)默认级别 3 在速度和压缩率间很平衡。
-d解压;注意 zstd 默认删原文件(和 gzip 一样),想保留加-k。级别 -1(最快)到 -19(最省空间),可按场景调。
二、并行与流式
bash
zstd -T0 file.iso # -T0 用全部 CPU 核心并行压缩,更快
cat bigfile | zstd - > bigfile.zst # 从管道读,适合接在别的命令后面
zstd -dc bigfile.zst | wc -l # 解压到 stdout 直接喂下游
-T0自动用满核,大文件压缩提速明显。zstd 天然支持流式(从 stdin 读、往 stdout 写),很容易嵌进管道,和 tar 配合做归档压缩。
三、与 tar 结合归档
bash
tar --zstd -cf archive.tar.zst dir/ # tar 直接调用 zstd 打包压缩(需 tar 支持 --zstd)
tar --zstd -xf archive.tar.zst # 解包现代 tar 原生支持
--zstd(和--gzip/--xz并列),一条命令完成"打包+压缩"。相比传统 gzip,同样大小压得小、压得快;相比 xz,速度快一个量级,是现在的推荐默认。
四、zstd vs gzip vs xz
| 工具 | 速度 | 压缩率 | 解压速度 |
|---|---|---|---|
| gzip | 中 | 中 | 快 |
| xz | 慢 | 高 | 慢 |
zstd | 快 | 接近 xz | 极快 |
结论:要最快且压缩率可接受用 gzip;要极限压缩率、不计时间用 xz;要"又快又小、解压还快"用 zstd——这也是它成为新标准的原因(内核、包管理、容器镜像都在采用)。
五、踩坑:老系统 tar 不认 --zstd
bash
# 旧版 tar 可能没编译进 zstd 支持,报错
# 退路:tar cf - dir | zstd > archive.tar.zst老 tar 没有
--zstd选项时,用管道组合tar cf - | zstd即可,兼容性最好。另外.zst解压必须对方也装了 zstd,跨机器传文件注意这一点。
六、实战:快速压日志归档
bash
tar --zstd -cf /backup/logs-$(date +%F).tar.zst /var/log/app/ # 快压且省空间一句话总结
zstd = 又快又小的新一代压缩:默认级别 3 平衡好,-19 提压缩率、-T0 并行、-k 保留原文件;与 tar --zstd 结合做归档。相比 gzip 更快更省、相比 xz 速度高一个量级,是新标准。老 tar 不支持时用 tar cf - | zstd。