补充说明
zstd 是 Facebook 开源的 Zstandard 压缩算法官方命令行工具,主打高压缩速度与可调压缩比的平衡。它支持多线程、长距离匹配和字典,常用于日志归档、软件包、备份和容器镜像层。
默认行为是压缩;使用 -d 解压。压缩级别 1-19,数字越大压缩率越高但越慢;--ultra 可解锁 20-22 级,代价是更高的内存和 CPU 消耗。多线程用 -T0 表示使用全部核心。输出文件默认添加 .zst 后缀并删除原文件,-k 可保留原文件。
解压时 zstd 能自动识别是否使用了长距离匹配,但压缩时若启用 --long,解压端需要足够内存。与 tar 组合可替代 gzip:tar -cf - dir | zstd -T0 -o dir.tar.zst。校验压缩包完整性可用 -t。
语法
zstd [选项] [输入文件...]
选项
-z:压缩(默认行为)。-d, --decompress:解压。-1至-19:设置压缩级别,默认通常为 3。--ultra:允许使用 20-22 级压缩。-T 数量:设置工作线程数,-T0使用全部核心。-o 文件:指定输出文件。-k, --keep:保留输入文件。-f, --force:覆盖输出文件。-c, --stdout:输出到标准输出。--rm:成功后删除输入文件。-r:递归处理目录。-l, --list:列出压缩文件信息。-t, --test:测试压缩数据完整性。--long[=窗口]:启用长距离匹配,适合大文件。
实例
# 压缩文件,生成 app.log.zst 并保留原文件
zstd -k app.log
# 高压缩比、多线程压缩
zstd -19 -T0 -o backup.tar.zst backup.tar
# 解压到当前目录
zstd -d archive.tar.zst
# 解压到标准输出,配合 tar
zstd -dc archive.tar.zst | tar -xf -
# 打包目录并压缩
tar -cf - /etc/nginx | zstd -T0 -19 -o nginx.tar.zst
# 列出压缩文件信息
zstd -l archive.tar.zst
# 校验压缩文件
zstd -t archive.tar.zst