什么是 Zstd?
Zstd是“Zstandard”的缩写,是以zlib级和更好的压缩率为目标的快速无损压缩算法。
它有一个非常快的熵阶段,由 Huff0 和 FSE 库提供。项目目前 Star 14K ,可以看出项目相对比较活跃;
性能对比测试
LZ压缩算法性能对比
小数据压缩性能对比
字典压缩方法示例
创建字典
zstd --train FullPathToTrainingSet/* -o dictionaryName
用字典压缩
zstd -D dictionaryName FILE
用字典解压缩
zstd -D dictionaryName --decompress FILE.zst
安装
#Ubuntu
sudo apt install zstd
#CentOS
sudo yum install zstd
#编译安装
sudo git clone
sudo cd zstd && sudo make && sudo make install
命令参数
语法格式
zstd [args] [FILE(s)] [-o file]
选项/参数
-#: 压缩级别(1-19,默认值为3);
-d: 解压;
-D file: 使用文件作为字典;
-o file: 结果存储在文件中;
-f: 在没有提示的情况下覆盖输出并(解压)压缩链接;
--rm : 成功解压缩后删除源文件;
-k: 保存源文件(默认);
-h/-H: 显示帮助/长帮助并退出;
高级选项 :
-V: 显示版本号;
-v: 详细模式;
-q: 静默输出;
-c: 强制写入标准输出;
-l: 输出zstd压缩包中的信息;
--ultra: 启用超过19级,最多22级(需要更多内存);
-T#: 使用几个线程进行压缩(默认值:1个);
-r: 递归操作目录;
--format=gzip: 将文件压缩为.gz格式;
-M#: 为解压设置内存使用限制;
字典生成器:
--train ##: 从一组训练文件中创建一个字典;
--train-cover[=k=#,d=#,steps=#]: 使用带有可选参数的cover算法;
--train-legacy[=s=#]: 有选择性地使用遗留算法(默认值:9);
-o file: “file”是字典名(默认:字典);
--maxdict=#: 将字典限制为指定大小(默认值:112640);
--dictID=#: 强制字典ID为指定值(默认:随机);
性能测试参数 :
-b#: 基准测试文件,使用#压缩级别(默认为1);
-e#: 测试从-bX到#的所有压缩级别(默认值:1);
-i#: 最小计算时间(秒)(默认为3s);
-B#: 将文件切成大小为#个独立块(默认:无块);
--priority=rt : 将进程优先级设置为实时;
应用示例
#压缩一个文件
sudo zstd File
#压缩完成删除源文件
sudo zstd --rm File
#解压缩包
sudo zstd -d File.zst
#解压压缩包到标准输出
sudo zstd -dc File.zst
#查看压缩包
sudo zstdcat File.zst
sudo zstd -l File.zst
#解压缩时输出详细信息
sudo zstd -v File
sudo zstd -v -d File.zst
#压缩时指定压缩级别(低0-19高,默认3级别)
sudo zstd -level File
sudo zstd -12 File
#使用更多的内存(解压缩)拥有更高的压缩比
sudo zstd --ultra -level File
#多进程并发执行解压缩,默认单进程
sudo zstd -T0 File
sudo zstd -T2 File
sudo zstd -T2 -d File.zst
注意:0表示自动分配CPU核心;