lrzip
Long Range ZIP (或 Lzma RZIP) 是一个为大型文件优化的压缩程序,主要包含一个用于长距离冗余缩减的扩展 rzip 步骤和一个普通压缩器(LZMA、LZO、gzip、bzip2 或 ZPAQ)步骤。文件越大、内存越多,其压缩优势就越明显,尤其是在文件大于 100MB 时。其优势可以被选择为大小(比 bzip2 小得多)或速度(比 bzip2 快得多)。
安装
用法
压缩
压缩目录(递归)需要 lrztar,它首先将目录打包,然后像 tar 在用户使用 gzip 或 xz 压缩时一样压缩单个文件(分别为 tar zcf ... 和 tar Jcz ...)。请注意,压缩算法是在 rzip 类预压缩归档后使用的,而不是例如普通“LZMA 压缩归档”中的纯 LZMA 压缩。
这将从名为 foo 的目录创建一个 LZMA 压缩的归档文件 foo.tar.lrz
$ lrztar foo
这将从名为 bar 的文件创建一个 LZMA 压缩的归档文件 bar.lrz
$ lrzip bar
为了极致压缩,请添加 -z 开关,它启用 ZPAQ,但比 LZMA 耗时很多
$ lrztar -z foo
为了极快的压缩和解压缩速度,请使用 -l 开关进行 LZO 压缩
$ lrzip -l bar
默认情况下,lrzip 可以使用您所有可用的内存大小来记住文件块历史。如果您要压缩的文件比这还大,请添加 -U 开关启用磁盘映射。请注意,这将明显变慢,但可以处理任何大小的文件。
$ lrzip -U bar
解压缩
要完全提取一个归档目录
$ lrzuntar foo.tar.lrz
要将 bar.lrz 解压缩为 bar
$ lrunzip bar.lrz
详细信息
Lrzip 使用 rzip 的一个扩展版本,它首先执行一个长距离冗余缩减。lrzip 的修改使其能够根据内存大小进行扩展。然后数据会被
- 由 LZMA 压缩(默认),可以获得出色的压缩效果,速度约为 bzip2 压缩的两倍。
- 由其他几个出于不同原因选择的压缩器进行压缩,按实用性可能性排序。
- ZPAQ:极致压缩,比 LZMA 小 20%,但压缩和解压缩速度极慢。
- LZO:极快的压缩和解压缩速度,在大多数机器上压缩速度比磁盘写入快,使其与简单地复制大文件一样快(甚至更快)。
- GZIP:速度几乎与 LZO 一样快,但压缩效果更好。
- BZIP2:一种事实上的 Linux 标准,但处于 LZMA 和 gzip 之间的中间地带,不偏不倚。
- 不压缩并进行 rzip 准备。这种形式在大小和速度上都能大幅提高后续文件上的任何压缩性能(由于 rzip 准备合并相似的可压缩数据块并创建更小的文件的性质)。通过“提高”性能,要么在轻微损害压缩效果的情况下加速非常慢的压缩器,要么大大提高简单压缩算法的压缩率。
主要缺点是
- 主要的 lrzip 应用程序只能处理单个文件,因此需要 lrztar 包装器来模拟一个完整的归档工具。
- 它需要大量内存才能获得最佳性能(内存大小与要压缩的数据大小相同;但请参见下面的滑动 mmap),并且内存少于 256MB 时(对于压缩而言)实际上是不可用的。解压缩需要的内存较少,可以在内存较小的机器上工作。有时可能需要在这些内存较小的机器上启用交换空间,以便操作系统能够正常运行。
- STDIN/STDOUT 在压缩和解压缩时都可以正常工作,但以这种方式压缩的较大文件最终效率会较低。
lrzip 的独特之处在于,它始终试图充分利用您系统中的可用内存以获得最大效益。默认情况下,它通过选择最大的窗口大小来实现这一点,而不耗尽内存。它还有一个独特的“滑动 mmap”功能,即使文件很大,也可以使用大于内存大小的压缩窗口。它通过(使用 -U 选项)实现这一点,即实现一个正常的、一个大的 mmap 缓冲区,以及一个小的移动缓冲区来跟踪当前正在检查的文件部分,从而模拟一个大得多的单个 mmapped 缓冲区。不幸的是,此模式可能慢很多倍。