200字
Linux 下的高效压缩工具 Zstandard
2025-12-27
2025-12-27

一:什么是Zstandard

Zstandard (Zstd) 是一种由 Facebook 开发并开源新一代无损压缩算法

它于 2015 年首次亮相,其核心价值在于成功地在高压缩比极速解压之间找到了出色的平衡点,因此在技术社区中广受欢迎。 相较于传统的 gzip 等工具,Zstd 实现了压缩效率上的突破。它在保证数据高度压缩的同时,还能提供远超同类算法的解压性能,完美契合了对吞吐量要求高的现代化应用场景,例如大规模数据仓库的 ETL 流程、实时系统日志管理高性能数据流的网络传输

二:Zstandard 有什么特点

1:极致的性能平衡

特性

描述

应用价值

高压缩比

在标准测试中,Zstd 通常能提供优于 gzip 的压缩效果。

有效减少存储空间和数据传输带宽需求。

快速解压

具备极快的解压缩速度,甚至可以远超许多 SSD 的顺序读取速度

极大提高数据读取效率和应用程序的响应速度,尤其适合读取密集型场景。

多线程支持

内建多线程压缩功能,能充分利用现代多核 CPU 的性能,大幅提升压缩吞吐量

在处理大数据集时,显著缩短等待时间,提高工作效率

2:灵活的定制能力

丰富的压缩级别选择

Zstd 提供了从 1 到 22 级的广泛压缩级别范围,允许用户根据具体需求进行灵活的权衡 (Trade-off)

  • 低级别 (1-3): 追求极快压缩速度,但压缩比较低。适用于需要实时压缩、对延迟敏感的场景(如网络传输)。

  • 中等级别 (4-15): 提供良好的平衡点,是大多数通用场景的推荐设置。

  • 高级别 (16-22): 追求最高压缩比,但压缩速度最慢。适用于归档存储,一旦压缩后很少解压的场景。

字典压缩模式 (Dictionary Mode)

这是一个关键特性,专门用于优化小数据块或大量小文件的压缩:

  • 工作原理: 用户提供相似的样本数据进行训练,生成一个字典。该字典包含了这些样本中最常见的数据模式和重复序列。

  • 效果: 在压缩和解压时加载该字典,可以帮助压缩器在数据量很小(传统算法难以有效压缩)的情况下,识别出重复模式,从而实现更高的压缩率

  • 适用场景: HTTP/HTTPS 请求头、小型数据库记录、日志事件等。

3:完善的工具与生态

多样化的使用模式

Zstandard 提供了成熟的命令行工具,支持多种操作模式,使其不仅是一个库,也是一个实用的工具:

  • 基本操作: 压缩 (zstd)、解压 (unzstd)。

  • 实用功能: 查看压缩文件信息 (zstd -l)、测试文件完整性 (zstd -t) 等。

三:Zstandard 的安装

Debian/Ubuntu 系统的安装命令如下:

sudo apt install zstd

也可以从源码编译安装「这里以 1.5.7 版本为例」命令如下:

wget https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz
tar -zxvf zstd-1.5.7.tar.gz
cd zstd-1.5.7/
make
sudo make install

四:Zstandard (Zstd) 命令行使用指南

文件压缩 (Compression)

Zstd 的基本设计使其使用起来与传统的 gzipxz 非常相似。

功能

命令行格式

示例

备注

基础压缩

zstd <file_name>

zstd data.log

生成 <file_name>.zst 文件,并默认删除原始文件。

指定级别

zstd -<level> <file_name>

zstd -10 report.pdf

级别范围为 1 (最快) 到 22 (最高压缩比)。

保留原文件

zstd -k <file_name>

zstd -k big_data.csv

使用 -k (keep) 选项,压缩完成后保留原始文件。

指定输出名

zstd -c <file_name> > <output_name>.zst

zstd -c source.txt > target.zst

使用标准输出 (-c),常用于管道操作或指定输出文件名。

文件解压 (Decompression)

Zstd 提供了多种解压命令形式,但核心是使用 -d 选项或直接调用 unzstd 命令。

功能

命令行格式

示例

备注

基础解压

zstd -d <archive_name>.zst

zstd -d backup.zst

解压后默认删除 .zst 文件。

解压并保留

zstd -d -k <archive_name>.zst

zstd -d -k archive.zst

使用 -k (keep) 选项,保留 .zst 压缩文件。

指定输出名

zstd -d -o <new_file> <archive_name>.zst

zstd -d -o final.txt compressed.zst

使用 -o (output) 选项来指定解压后的文件名。

等效命令

unzstd <archive_name>.zst

unzstd backup.zst

unzstd 命令与 zstd -d 是等效的。

目录和递归操作

Zstd 本身是针对文件的压缩工具。为了处理目录,它引入了 递归 (-r) 选项。

功能

命令行格式

示例

备注

压缩目录

zstd -r <directory_name>

zstd -r logs_2023

递归处理目录中的所有文件,为每个文件生成一个 .zst 文件。

解压目录

zstd -dr <archive_name>.zst

zstd -dr logs_2023.zst

错误! Zstd 的递归模式不会将整个目录打包成单个 .zst 文件。

正确解压

zstd -r -d <directory_name>

zstd -r -d logs_2023

当目录内有多个 .zst 文件时,使用 -r -d 批量解压。

最佳实践:

由于 zstd -r 只是对目录内的每个文件进行单独压缩,如果需要将整个目录打包成单个压缩文件,应首先使用 tar 工具进行打包,再用 Zstd 压缩:

# 打包并压缩:将整个 /my_dir 目录打包并用 Zstd 压缩
tar -I zstd -cf my_dir.tar.zst /my_dir

解压:

tar -I zstd -xf my_dir.tar.zst

信息查看与校验

功能

命令行格式

示例

作用

查看信息

zstd -l <archive_name>.zst

zstd -l data.zst

列出压缩文件的相关信息,包括压缩级别、原始大小、压缩大小压缩比

测试完整性

zstd -t <archive_name>.zst

zstd -t archive.zst

测试压缩文件是否完整且可解压,但不进行实际解压。常用于校验传输后的文件。

总结

上面就是博主今天分享的全部内容了,这些都是博主通过自己所找的资料和日常使用中总结出来的,肯定是有些方面是不太全面的。

VMRack 机房在美国洛杉矶 Equinix LA4 金融级数据中心,主打配备全新 AMD EPYC 7K62 高性能处理器,CPU 核心数高达 192 个vCPU是1:1的资源配比性能稳定,采用分布式块存储和三副本机制,大大提高了磁盘读写能力,轻松应对超高IOPS需求现目前主要运营三条线路:三网精品CN2 GIA/9929/CMIN2)、三网优化163/10099/CMI)以及 美国原生Global BGP),三条线路基本满足绝大部分人群的日常使用需求以及中小企业日常的办公需求。可以说 VMRack 在线路方面是非常具有竞争优势的。三网精品直连为中国大陆用户提供了低延迟,高速度的优化网络体验,对于日常办公、娱乐、看视频以及海外电商都是非常适用的;三网优化具有非常大的带宽口子,非常满足需要大流量下载的应用场景,比如CND内容分发、影视站点播等;而美国原生则者主打极致性价比和全球连接性,作为美西落地机是非常具有性价比的。

官网地址:https://www.vmrack.net/

TG交流群: https://t.me/vmrack_chat

Linux 下的高效压缩工具 Zstandard
作者
Administrator
发表于
2025-12-27
License
CC BY-NC-SA 4.0

评论