lrzip

出自 ArchWiki

远程 ZIP(或 Lzma RZIP)是一个为大型文件优化的压缩程序,主要由一个扩展的 rzip 步骤组成,用于远程冗余缩减,以及一个普通的压缩器(LZMA、LZO、gzip、bzip2 或 ZPAQ)步骤。文件越大,您拥有的内存越多,这将提供的压缩优势就越好,尤其是在文件大于 100MB 之后。可以选择尺寸(比 bzip2 小得多)或速度(比 bzip2 快得多)的优势。

安装

安装 lrzip 软件包。

用法

压缩

目录的压缩(递归)需要 lrztar,它首先对目录进行 tar 归档,然后压缩单个文件,就像用户使用 gzipxz 压缩时 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 修改使其可以根据内存大小进行伸缩。然后数据会被

  1. 由 LZMA(默认)压缩,它提供出色的压缩率,速度大约是 bzip2 压缩速度的两倍
  2. 由许多其他压缩器压缩,这些压缩器出于不同的原因选择,并按实用性可能性排序
    1. ZPAQ:极限压缩,比 LZMA 小最多 20%,但压缩和解压缩都极慢。
    2. LZO:极速压缩和解压缩,在大多数机器上,压缩速度比磁盘写入还快,使其速度与简单复制大文件一样快(甚至更快)。
    3. GZIP:几乎和 LZO 一样快,但压缩率更高。
    4. BZIP2:某种事实上的 Linux 标准,但其性能介于 LZMA 和 gzip 之间,特点不突出。
  3. 保持未压缩并经 rzip 预处理。这种形式显著提高了对结果文件执行的任何压缩的尺寸和速度(由于 rzip 预处理的特性,合并了相似的可压缩数据块并创建了更小的文件)。通过“提高”,要么会加快极慢速压缩器的速度,对压缩率的影响很小,要么会大大提高简单压缩算法的压缩率。

主要缺点是

  1. 主要的 lrzip 应用程序仅适用于单个文件,因此需要 lrztar 包装器来模拟完整的归档器。
  2. 为了获得最佳性能,它需要大量内存(与要压缩的数据大小一样多的内存;但请参阅下面的滑动 mmap),并且在少于 256MB 内存的情况下(用于压缩)实际上不可用。解压缩需要的内存较少,并且可以在内存较小的机器上工作。有时可能需要在这些内存较小的机器上启用交换空间,以使操作系统正常运行。
  3. STDIN/STDOUT 在压缩和解压缩方面都工作良好,但以这种方式压缩的较大文件最终压缩效率会较低。

lrzip 的独特功能是它始终尝试最大程度地利用系统中的可用内存,以获得最大收益。它默认执行此操作,选择尽可能大的窗口大小,而不会耗尽内存。它还具有独特的“滑动 mmap”功能,即使文件很大,也可以使用比内存大小更大的压缩窗口。它通过(使用 -U 选项)像往常一样实现一个大型 mmap 缓冲区,以及一个较小的移动缓冲区来跟踪当前正在检查的文件部分,模拟一个更大的单个 mmapped 缓冲区。不幸的是,这种模式可能会慢很多倍。

参见