在 Linux 上 Lzma 和 Bzip2的对比压缩介绍

举报
Tiamo_T 发表于 2022/02/16 14:53:04 2022/02/16
【摘要】 在本文中,让我们了解如何使用 lzma,这是一个有效的压缩实用程序,它的压缩比明显更好,运行速度更快。

Lzma 代表 Lempel-Ziv-Markov 链算法。Lzma是一个类似于 bzip2 和 gzip 的压缩工具,用于压缩和解压缩文件。它往往比 bzip 压缩更快、更有效。众所周知,gzip 压缩比 比 bzip2(和 lzma)差。

在本文中,让我们了解如何使用 lzma,这是一个有效的压缩实用程序,它的压缩比明显更好,运行速度更快。

使用 lzma -c 压缩输入文本文件

$ lzma -c --stdout sample.txt >sample.lzma

使用 -d 选项解压 lzma 文件

$ lzma -d –stdout sample.lzma >sample.txt

bzip2和lzma压缩工具对比

为了了解 lzma 的有效性,让我们用 lzma 和 bzip2 压缩/解压缩一个 1MB 的 sample.txt 并比较结果。这些测试是在具有 1GB RAM 且处理器为 Pentium 4 的机器上完成的。

sample.txt 输入文件的大小:

$ ls -l sample.txt
-rw-r--r-- 1 bala bala   1048576 2010-05-14 19:43 sample.txt

注意:我们在每个压缩和解压缩命令前面都使用了 time 命令来获取命令的 CPU 使用率。

使用 bzip2 压缩 sample.txt

使用 bzip2 命令压缩输入文件,压缩过程中不需要该选项。

$ time bzip2  sample.txt

real    0m27.874s
user    0m13.981s
sys     0m0.148s

$ ls -l sample.txt.bz2
-rw-r--r-- 1 bala bala      1750 2010-05-14 19:43 sample.txt.bz2

bzip2压缩后,输出文件大小为1750 字节


使用 bunzip2 解压 sample.txt

使用 bunzip2 实用程序解压压缩文件,它也不需要传递任何选项。

$ bunzip2  sample.txt.bz2

real    0m0.232s
user    0m0.128s
sys     0m0.020s

使用 lzma 压缩 sample.txt

现在,让我们使用带有以下选项的 lzma 命令压缩 sample.txt:

  • -c 压缩
  • –stdout 在标准输出中打印压缩输出
$ time lzma  -c --stdout  sample.txt >sample.lzma

real    0m2.035s
user    0m1.544s
sys     0m0.132s

$ ls -l sample.lzma
-rw-r--r-- 1 bala bala       543 2010-05-14 19:48 sample.lzma

压缩后,lzma生成的输出文件大小为543 字节,相对比 bzip2 命令小。此外,如上所示,lzma 使用的 CPU 时间比 bzip2 少得多。

使用 lzma 解压 sample.txt

使用带有以下选项的 lzma 命令解压缩 *.lzma 文件:

  • -d 压缩
  • –stdout 在标准输出中打印解压缩的输出
$ time lzma -d --stdout sample.lzma >sample.txt

real    0m0.043s
user    0m0.016s
sys     0m0.004s

如上所见,lzma做的解压比bzip2快很多倍

不同级别的 Lzma 压缩

  • Lzma 提供从 -1 到 -9 的压缩范围。
  • -9 是最高的压缩比,需要一定的时间和系统资源才能做到。这些比率不适用于减压。
  • -1 是最低级别的压缩比,它运行得更快。

执行以下操作以使用低级压缩比进行快速 lzma 压缩:

$ lzma -1 -c --stdout  sample.txt >sample.lzma

$ ls -l sample.lzma

-rw-r--r-- 1 bala bala       548 2010-05-14 20:47 sample.lzma

注意: -fast 是 -1 的别名。

-9 是最高级别的压缩比,比低级别的压缩比需要更长的时间。执行以下操作以使用高级压缩比进行密集压缩:

$ lzma -9 -c --stdout  sample.txt >sample.lzma

$ ls -l sample.lzma
-rw-r--r-- 1 bala bala       543 2010-05-14 20:55 sample.lzma

注意: -best 是 -9 的别名。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。