zstd - Facebook 使用的快速数据压缩算法
Zstandard(也称为zstd)是一款免费开源、快速实时数据压缩程序,具有更好的压缩比,由Facebook开发。它是一种用C编写的无损压缩算法(在Java中有重新实现)——因此它是一个本地Linux程序。
另请阅读:Linux 中的 10 个 7zip(数据压缩)命令示例
当需要时,它可以用压缩速度换取更强的压缩比(压缩速度与压缩比的权衡可以通过小增量进行配置),反之亦然。它有一种用于小数据压缩的特殊模式,称为字典压缩,并且可以从提供的任何样本集构建字典。它附带了一个命令行实用程序,用于创建和解码 .zst、.gz、.xz 和 .lz4文件。
重要的是,Zstandard 拥有丰富的 API 集合,支持几乎所有流行的编程语言,包括 Python、Java、JavaScript、Nodejs、Perl、Ruby、C#、Go、Rust、PHP、Switft 等。
它被积极用于压缩 Facebook 中多种格式和用例的大量数据; Amazon Redshift 数据仓库等服务; Hadoop、Redis 等数据库; Tor 网络和许多其他应用程序(包括游戏)。
以下结果是通过使用开源内存基准测试工具 lzbench 在运行 Linux Debian 的服务器上进行多项快速压缩算法测试而获得的。
如何在Linux中安装Zstandard压缩工具
要在 Linux 发行版上安装 Zstandard,您需要从源代码编译它,但在此之前,您首先需要使用发行版包管理器在系统上安装必要的开发工具,如图所示。
sudo apt update && sudo apt install build-essential #Ubuntu/Debian
yum group install "Development Tools" #CentOS/REHL
dnf groupinstall "C Development Tools and Libraries" #Fedora 22+
安装完所有需要的开发工具后,现在您可以下载源代码包,移至本地存储库目录,构建二进制文件并安装它,如图所示。
cd ~/Downloads
git clone https://github.com/facebook/zstd.git
cd zstd
make
sudo make install
安装Zstandard后,现在我们可以在下一节中进一步学习Zstd命令示例的一些基本用法。
了解 Linux 中的 10 个 Zstd 命令用法示例
Zstd 的命令行语法通常与 gzip 和 xz 工具相似,但有一些差异。
1. 要创建 .zst
压缩文件,只需提供文件名即可对其进行压缩,或者使用 -z
标志也意味着压缩,即默认操作。
zstd etcher-1.3.1-x86_64.AppImage
OR
zstd -z etcher-1.3.1-x86_64.AppImage
2. 要解压缩 .zst
压缩文件,请使用 -d
标志或 unzstd 实用程序,如图所示。
zstd -d etcher-1.3.1-x86_64.AppImage.zst
OR
unzstd etcher-1.3.1-x86_64.AppImage.zst
3.操作后删除源文件,默认情况下,压缩或解压成功后不会删除源文件,要删除源文件,请使用--rm
选项。
ls etcher-1.3.1-x86_64.AppImage
zstd --rm etcher-1.3.1-x86_64.AppImage
ls etcher-1.3.1-x86_64.AppImage
4. 要设置压缩级别,zstd 有许多操作修饰符,例如您可以将压缩级别指定为 -6
(数字 1-19,默认为3)如图所示。
zstd -6 --rm etcher-1.3.1-x86_64.AppImage
5.要设置压缩速度,zstd有一个压缩速度比1-10,默认压缩速度为1。您可以使用--fast
选项以压缩率换取压缩速度,数字越大压缩速度越快。
zstd --fast=10 etcher-1.3.1-x86_64.AppImage
6. 要显示有关压缩文件的信息,请使用 -l
标志,例如,该标志用于显示有关压缩文件的信息。
zstd -l etcher-1.3.1-x86_64.AppImage.zst
7. 要测试压缩文件的完整性,请使用 -t
标志,如图所示。
zstd -t etcher-1.3.1-x86_64.AppImage.zst
8. 要启用详细模式,请使用 -v
选项。
zstd -v -5 etcher-1.3.1-x86_64.AppImage
9. 要使用其他文件压缩或解压缩格式,例如 gzip、xz、lzma 和 lz4,请使用 --format=FORMAT
,如图所示。
zstd -v --format=gzip etcher-1.3.1-x86_64.AppImage
zstd -v --format=xz etcher-1.3.1-x86_64.AppImage
10. 要将 zstd 进程优先级设置为实时,您可以使用选项–priority=rt,如图所示。
$zstd --priority=rt etcher-1.3.1-x86_64.AppImage
-r
标志指示 zstd 对字典进行递归操作。通过查阅 zstd 手册页,您可以找到许多有用的高级选项,以及如何阅读或创建字典。
man zstd
Zstandard Github 存储库:https://github.com/facebook/zstd
Zstandard是一种快速实时、无损数据压缩算法和压缩工具,提供高压缩比。尝试一下并分享您的想法或通过下面的反馈表提出问题。