zstd 压缩

开源的压缩工具(RFC 8878):级别 1 至 19 可调,多线程 -T0 使用全部核心,解压速度快,适合备份与日志归档。

备份与容灾速查数据更新于 2026-10-13

zstd 是什么

zstd 是开源压缩工具,格式已标准化为 RFC 8878。它的级别从 1 到 19 可调,默认级别 3;支持多线程与长距离匹配,解压速度很快,因此在备份、日志归档与镜像分发场景中被广泛采用。相比 xz,它在同等耗时下通常能更快完成压缩与解压。

基本信息

级别1 更快到 19 更省空间,默认 3
线程-T0 使用全部核心,-Tn 指定线程数
长距离匹配--long 适合含大量重复模式的大文件
解压速度较快,适合恢复时限紧张的场景
格式RFC 8878,扩展名常用 .zst

常用命令

常用命令
zstd -T0 -10 /backup/data.tar -o /backup/data.tar.zst   # 多线程压缩
zstd -d /backup/data.tar.zst -o /backup/data.tar         # 解压
zstd -t /backup/data.tar.zst                             # 只校验不落盘
tar --zstd -cf /backup/data.tar.zst /data                # 打包压缩一步完成
# 旧版 tar 不支持时显式指定压缩程序
tar -I 'zstd -T0 -10' -cf /backup/data.tar.zst /data

级别与场景

级别速度与体积适用场景
1 到 3最快,体积略大窗口紧张、需要快速出包
8 到 12速度与压缩率均衡日常备份的常用区间
15 到 19慢,体积最小长归档与带宽昂贵的异地传输

使用要点

  • 先用小样本实测:不同数据类型的压缩比差异很大,级别要按实测结果选
  • 高压缩级别的内存占用明显上升,内存紧张的备份主机上要控制级别与并发
  • 多线程压缩在核数充足时收益明显,核数很少时开线程反而增加调度开销
  • 与 tar 组合时注意版本兼容,旧版 tar 需要显式指定压缩程序
  • 归档与传输链路越长,解压速度带来的收益越明显,这一点比压缩比更值得权衡
zstd 的速度优势在『打包加异地传输』的链路中体现明显:更快的压缩意味着更早释放备份窗口,更快的解压意味着更短的一次恢复尝试。

典型调优做法

  • 先做基线测量:用同一份数据分别跑级别 3、10、19,比较体积与耗时再定参数
  • 核对内存水位:高压缩级别在大文件上内存需求上升,可通过限制并发控制峰值
  • 把压缩放在数据流上游:边读边压能省去中间大文件,降低对临时空间的依赖
  • 归档保留原始校验和:压缩产物损坏通常整包不可用,校验要在压缩后生成

易错点

  • 高压缩级别(如 19)内存占用明显上升,内存紧张的备份主机应控制级别
  • 旧版 tar 不支持 --zstd,可改用 tar -I 'zstd -T0' 显式指定压缩程序
  • 把 zstd 用于已经压缩过的数据,收益接近零但消耗大量 CPU
  • 归档格式较新,目标恢复环境缺少对应版本工具时无法解开

数据来源与参考

  • zstd 官方文档(含 RFC 8878)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌