zstd 是什么
zstd 是 Facebook 开源的新一代压缩工具,速度与 gzip 同档而压缩率接近 xz,并支持多线程与长距离匹配。现代日志归档、软件包分发、容器镜像层传输大量使用 .zst 格式,多数发行版已原生支持。
基本信息
| 适用平台 | Linux / Unix,主流发行版有包;Windows 与 macOS 亦有官方版本 |
|---|---|
| 命令语法 | zstd [选项] 文件;解压用 zstd -d |
| 常用选项 | -k 保留原文件、-1 到 -19 级别、--ultra 允许 20-22、-T 线程数、-d 解压、-t 校验 |
| tar 联动 | GNU tar 1.31 起支持 --zstd,更早版本用 -I 指定压缩器 |
典型使用场景
- 日志归档:压缩率与速度平衡好,替换 gzip 能显著省空间
- 软件包与镜像分发:发行版原生支持,解压端通常无需额外依赖
- 数据库导出备份:大文件用 -T 多线程压缩,缩短备份窗口
- 冷数据极限压缩:用 --ultra -22 换取更小体积
- 分级存储:热数据用低级别保速度,冷数据用高级别省空间
常用示例
常用示例
zstd -k -19 backup.sql # 保留原文件,级别 19
zstd -d backup.sql.zst # 解压(默认解压后删除 .zst)
zstd -T0 -19 --long=27 big.dump # 多线程 + 长距离匹配,适合大文件
zstd -t backup.sql.zst # 只做完整性校验
tar -c --zstd -f app.tar.zst dir/ # tar 直接输出 .zst
tar -xf app.tar.zst -I 'zstd -T4' # 旧版 tar 手动指定压缩器与线程
zstd -l *.zst # 列出压缩包信息级别与场景
| 级别或参数 | 压缩率与速度 | 适用场景 |
|---|---|---|
| -1 到 -3 | 最快,-3 为默认 | 日常归档、需要快速解压的场景 |
| -9 到 -19 | 压缩率提升,速度下降 | 需要长期保留的数据 |
| --ultra -22 | 最高压缩率,内存消耗大 | 冷数据、一次性归档 |
| --long=27 | 启用长距离匹配 | 重复内容间距远的大文件 |
| -T0 | 使用全部核心 | 大文件并行压缩,内存开销随之上升 |
默认级别 3 的速度与压缩率已经优于 gzip 同档设置,多数场景不必调到高级别。
级别越高压缩时的内存占用越大,小内存机器批量压缩建议用 -6 到 -10 并配合 -T 控制并发。
zstd 压缩成功后默认删除原文件,脚本里务必加 -k,否则源文件会消失。