LZ4是一种极快的无损压缩算法,旨在以合理的压缩比提供非常高的压缩和解压缩速度(每个CPU核心的压缩速度超过500MB/s),这使其成为需要高速压缩的应用程序的理想选择,例如数据传输、实时处理、网络传输、内核解压和存储优化。
与其它一些压缩算法不同的是,LZ4压缩还具有非常快的解压缩速度,通常会达到多核系统上RAM速度的极限。在本文中,小编将通过实际示例指导你在Linux系统上安装和使用LZ4。
在Linux上安装LZ4
安装LZ4最简单的方法是使用Linux发行版存储库中提供的预构建包,命令如下:
sudo apt install lz4 [Debian、Ubuntu和Mint] sudo yum install lz4 [RHEL/CentOS/Fedora和Rocky/AlmaLinux] sudo emerge -a sys-apps/lz4 [Gentoo Linux] sudo apk add lz4 [Alpine Linux] sudo pacman -S lz4 [Arch Linux] sudo zypper install lz4 [OpenSUSE] sudo pkg install lz4 [FreeBSD]
如果你更喜欢从源代码构建LZ4,如果你的发行版不提供预编译包,或者需要最新版本的LZ4,那么可以克隆存储库并使用以下命令构建库和工具:
git clone https://github.com/lz4/lz4.git cd lz4 make sudo make install
使用LZ4压缩和解压缩文件
LZ4提供了一个命令行工具,可以用来压缩和解压缩文件,具体的使用方法如下所述。
要使用LZ4压缩文件,请使用以下命令。
lz4 tecmint.txt tecmint_file.lz4
要解压缩使用LZ4压缩的文件,请使用以下命令:
lz4 -d tecmint_file.lz4 decompressed_tecmint.txt
使用LZ4压缩和解压缩目录
LZ4不直接支持压缩目录,但你可以使用tar命令与LZ4结合来实现这一点。
要使用LZ4压缩目录,请使用以下命令:
tar cf - tecmint | lz4 - compressed_tecmint.tar.lz4
要使用LZ4解压缩目录,请使用以下命令:
lz4 -d compressed_tecmint.tar.lz4 | tar -xvf -
使用LZ4和管道(Pipes)
LZ4可以在管道中用于在其它命令处理数据时压缩或解压缩数据。
例如,如果你有一个很大的日志文件并想在流式传输时对其进行压缩,可以使用以下命令:
cat large_log_file.log | lz4 - compressed_log.lz4
上述命令会读取 large_log_file.log
文件的内容,通过管道传递给 lz4
命令,并将压缩结果保存到 compressed_log.lz4
文件中。
此外,你也可以在解压文件的同时处理其内容,例如在解压文件时并将输出传递给grep命令来搜索包含 “ERROR” 的行:
lz4 -d compressed_log.lz4 | grep "ERROR"
设置LZ4压缩级别
LZ4提供多种压缩级别,范围从1(快速)到9 (高压缩),你可以使用-1
到-9
标志指定压缩级别:
例如,使用最高压缩级别:
lz4 -9 input_file.txt compressed_file.lz4
该命令使用压缩级别9,以获得更好的压缩率,但会牺牲速度。
要获取有关压缩过程的更多信息,请使用-v
选项:
lz4 -v input_file.txt compressed_file.lz4
为了实现最大程度的压缩,请使用-HC
选项:
lz4 -HC input_file.txt compressed_file.lz4
此模式明显速度较慢,但压缩比更好。
在应用程序中使用LZ4库
如果你是开发人员,可以使用LZ4库将压缩功能集成到您的应用程序中。
以下是使用LZ4 C API的基本示例:
#include <lz4.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { const char* input = "This is a test string to compress using LZ4."; int inputSize = strlen(input) + 1; int maxCompressedSize = LZ4_compressBound(inputSize); char* compressed = malloc(maxCompressedSize); int compressedSize = LZ4_compress_default(input, compressed, inputSize, maxCompressedSize); if (compressedSize > 0) { printf("Compression successful: %d bytes compressed to %d bytes\n", inputSize, compressedSize); } else { printf("Compression failed\n"); } free(compressed); return 0; }
这个简单的程序使用LZ4压缩字符串并输出压缩后的大小。
结论
LZ4是一种极快的压缩算法,适用于对速度要求严格的场景,它使用包管理器或从源代码构建,在Linux系统上安装LZ4非常简单。
本文通过实例介绍了LZ4的基本和高级用法,当然还包括一些将LZ4集成到C应用程序中的简单示例。有了这些知识,你可以在Linux系统上的各种应用和工作流程中利用LZ4进行高效的数据压缩。