lrzip
远程 ZIP(或 Lzma RZIP)是一个为大型文件优化的压缩程序,主要由一个扩展的 rzip 步骤组成,用于远程冗余缩减,以及一个普通的压缩器(LZMA、LZO、gzip、bzip2 或 ZPAQ)步骤。文件越大,您拥有的内存越多,这将提供的压缩优势就越好,尤其是在文件大于 100MB 之后。可以选择尺寸(比 bzip2 小得多)或速度(比 bzip2 快得多)的优势。
安装
用法
压缩
目录的压缩(递归)需要 lrztar,它首先对目录进行 tar 归档,然后压缩单个文件,就像用户使用 gzip 或 xz 压缩时 tar 所做的那样(分别为 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 缓冲区。不幸的是,这种模式可能会慢很多倍。