Zstandard (zstd) 使用教程
Zstandard(简称 zstd)是一个现代的压缩算法,旨在提供非常高效的压缩比和速度。它被设计为适用于多种场景,从高压缩比到高压缩速度都有优化,并支持多线程。此教程将带你了解如何在 Linux 系统上使用 zstd
进行文件和目录的压缩与解压。
1. 安装 Zstandard
首先,确保你的 Linux 系统上安装了 zstd
。
在 Debian/Ubuntu 系统上,使用以下命令安装:
sudo apt update
sudo apt install zstd
在 CentOS/RHEL 系统上,使用以下命令安装:
sudo yum install zstd
2. 压缩文件
2.1 压缩单个文件
使用 zstd
来压缩一个文件非常简单。基本命令格式如下:
zstd input.txt
这将压缩 input.txt
文件,并生成 input.txt.zst
文件。压缩后的文件会保留原文件的扩展名(.zst
)。
你也可以为输出文件指定名称:
zstd input.txt -o output.zst
2.2 使用多线程压缩
zstd
支持多线程压缩,利用多核 CPU 提高压缩速度。可以使用 -T
选项指定使用的线程数:
zstd -T8 input.txt
-T8
:使用 8 个线程进行压缩。
你可以根据你的 CPU 核心数调整 -T
后的数字,默认情况下,zstd
会自动选择合适的线程数。
2.3 压缩多个文件
可以同时压缩多个文件,使用以下命令:
zstd file1.txt file2.txt
这将生成 file1.txt.zst
和 file2.txt.zst
两个压缩文件。如果你想将它们打包到一个文件中,可以使用:
zstd file1.txt file2.txt -o files.tar.zst
这将创建一个包含 file1.txt
和 file2.txt
的压缩包 files.tar.zst
。
2.4 压缩整个文件夹
zstd
允许你直接递归地压缩一个文件夹,而不需要使用 tar
。使用 -r
参数:
zstd -r -T8 /path/to/directory -o archive.zst
-
-r
:递归压缩目录中的所有文件和子目录。 -
-T8
:使用 8 个线程进行压缩。 -
/path/to/directory
:指定要压缩的文件夹。 -
-o archive.zst
:指定压缩后的输出文件名。
3. 解压缩文件
3.1 解压 .zst
文件
解压一个 .zst
文件非常简单,使用 -d
参数:
zstd -d archive.zst
这会解压 archive.zst
文件,并生成 archive
文件。如果你想指定输出文件的名称,可以使用 -o
参数:
zstd -d archive.zst -o output.txt
3.2 解压多个文件
如果你压缩了多个文件,你可以解压它们:
zstd -d file1.txt.zst file2.txt.zst
3.3 解压并保留原文件名
如果你希望在解压时保持原文件名(例如:file1.txt
而不是 file1.txt.zst
),可以使用 -o
参数,结合通配符(*
):
zstd -d *.zst
4. 高级功能
4.1 压缩级别
zstd
支持多种压缩级别,默认是 3,你可以通过 -#
参数调整压缩级别(0 到 22)。级别越高,压缩比越好,但速度会变慢。
zstd -19 input.txt
-19
:使用压缩级别 19,较高的压缩比,但压缩速度较慢。
4.2 自定义字典
如果你有一个包含重复模式的大型数据集,可以创建和使用自定义字典来提高压缩效率。首先,使用 zstd
生成字典:
zstd --train dictionary_files/*.txt -o dictionary_file
然后使用自定义字典来压缩文件:
zstd -D dictionary_file input.txt
4.3 直接管道压缩与解压
zstd
还支持直接与其他命令结合使用,通过管道将数据流传输给压缩工具。例如,你可以用管道直接压缩一个命令输出的内容:
cat input.txt | zstd > input.txt.zst
同样地,你可以通过管道将 .zst
文件直接解压:
zstd -d archive.zst -c | tar -xf -
5. 总结
zstd
是一个高效且灵活的压缩工具,它能够在不牺牲压缩率的前提下,提供非常快的压缩和解压速度。以下是本教程中的重点:
-
压缩单个文件:
zstd input.txt
-
压缩文件夹:
zstd -r -T8 /path/to/directory -o archive.zst
-
使用多线程:
zstd -T8 input.txt
-
解压文件:
zstd -d archive.zst
-
调整压缩级别:
zstd -19 input.txt
-
创建和使用自定义字典:
zstd --train