当前位置: 澳门新濠3559 > 操作系统 > 正文

它在.xz容器格式中使用,而前面的压缩和解压缩

时间:2019-11-22 03:29来源:操作系统
  有段时间没有来园子了,今天从 www.kernel.org 上面下载了一个 2.6.32.2内核压缩包,下载 XZ的介绍 下来后发现是一个  .xz  结尾的文件,一看与通常的 .gz、.bz2等格式不一样,感觉可能

 

  有段时间没有来园子了,今天从 www.kernel.org 上面下载了一个 2.6.32.2 内核压缩包,下载

XZ的介绍

下来后发现是一个  .xz  结尾的文件,一看与通常的  .gz、.bz2等格式不一样,感觉可能利用系统现有

 

的压缩和解压缩工具可能不能解压,测试后果然不能通过gzip、bzip呼和bzip2等工具解压。

今天升级Python的时候,下载的Python-2.7.8.tar.xz安装包为xz格式,好吧,我又孤陋寡闻了,居然第一次遇见xz格式的压缩文件。搜索了一下资料,下面是xz的一些介绍:

  就在Internet上捞了一下,知道整个这个格式是 LZMA 格式的压缩文件,就是说是利用LZMA压缩

 

算法生成的,而前面的压缩和解压缩工具不支持这个算法。于是就又捞了一把,说是可以用7zip工具来

xz是一个使用 LZMA压缩算法的无损数据压缩文件格式。和gzip与bzip2一样,同样支持多文件压缩,但是约定不能将多于一个的目标文件压缩进同一个档案文件。相反,xz通常作为一种归档文件自身的压缩格式,例如使用tar或cpioUnix程序创建的归档。xz 在GNU coreutils(版本 7.1 或更新)中被使用。xz 作为压缩软件包被收录在 Fedora (自Fedora 12起), Arch Linux, FreeBSD、 Slackware Linux、CRUX 和 Funtoo中。

解压,也可以用 XZ Utils工具进行解压。  于是就逛了一圈 XZ Utils的官网:

 

下载了一个xz-5.0.1.tar.gz 的源码包。解压后如下所示:

它在.xz容器格式中使用,而前面的压缩和解压缩工具不支持这个算法澳门新濠3559。XZ Utils压缩代码的核心是基于LZMA SDK,但它已经被修改了很多以适应XZ Utils。主压缩算法目前是LZMA2,它在.xz容器格式中使用。 使用典型文件,XZ Utils比gzip创建的输出比gzip小30%,比bzip2小15%。到目前为止,lzma utils 的压缩率仍是最大的,XZ Utils 解压时间占优势。

[root@localhost setup_file]# cd xz-5.0.1
[root@localhost xz-5.0.1]# ls
ABOUT-NLS   config.h       COPYING           dos              lib          NEWS       tests
aclocal.m4  config.h.in    COPYING.GPLv2     Doxyfile         libtool      PACKAGERS  THANKS
AUTHORS     config.log     COPYING.GPLv3     Doxyfile.in      m4           po         TODO
autogen.sh  config.status  COPYING.LGPLv2.1  extra            Makefile     README     windows
build-aux   configure      debug             INSTALL          Makefile.am  src
ChangeLog   configure.ac   doc               INSTALL.generic  Makefile.in  stamp-h1

 

   里面有一个README文档,打开后查看里面的内容:

XZ Utils的官方网站为: ,官网关于XZ的介绍资料如下:

156 
157       2. Compile XZ Utils with debugging code using configure switches
158          --enable-debug and, if possible, --disable-shared. If you are
159          using GCC, use CFLAGS='-O0 -ggdb3'. Don't strip the resulting
160          binaries.

 

  这地方说,如果你需要编译带调试信息的代码,那么就需要在执行 ./configure 的时候带上 --enable-debug 选项。

XZ Utils

不过一般不需要。

 

  然后接着往下看:

XZ Utils is free general-purpose data compression software with a high compression ratio. XZ Utils were written for POSIX-like systems, but also work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils.

166       4. Try to reproduce the suspected bug. If you get "assertion failed"
167          message, be sure to include the complete message in your bug
168          report. If the application leaves a coredump, get a backtrace
169          using gdb:
170            $ gdb /path/to/app-binary   # Load the app to the debugger.
171            (gdb) core core   # Open the coredump.
172            (gdb) bt   # Print the backtrace. Copy & paste to bug report.
173            (gdb) quit   # Quit gdb.

The core of the XZ Utils compression code is based on LZMA SDK, but it has been modified quite a lot to be suitable for XZ Utils. The primary compression algorithm is currently LZMA2, which is used inside the .xz container format. With typical files, XZ Utils create 30 % smaller output than gzip and 15 % smaller output than bzip2.

  这个地方说,如果在make 或者 make install 的时候遇到 中断错误,那么就可以执行下面的命令来

XZ Utils consist of several components:

检查出错的原因。 一般编译的时候,不会出错,这一步也能省略。

·         liblzma is a compression library with an API similar to that of zlib.

  然后接着往下看:

·         xz is a command line tool with syntax similar to that of gzip.

191 4. Translating the xz tool
192 --------------------------
193 
194     The messages from the xz tool have been translated into a few
195     languages. Before starting to translate into a new language, ask
196     the author that someone else hasn't already started working on it.
197 
198     Test your translation. Testing includes comparing the translated
199     output to the original English version by running the same commands
200     in both your target locale and with LC_ALL=C. Ask someone to
201     proof-read and test the translation.
202 
203     Testing can be done e.g. by installing xz into a temporary directory:
204 
205         ./configure --disable-shared --prefix=/tmp/xz-test
206         # <Edit the .po file in the po directory.>
207         make -C po update-po
208         make install
209         bash debug/translations.bash | less
210         bash debug/translations.bash | less -S  # For --list outputs

·         xzdec is a decompression-only tool smaller than the full-featured xz tool.

  这个地方到了正题: 编译和安装 xz 工具。

·         A set of shell scripts (xzgrep, xzdiff, etc.) have been adapted from gzip to ease viewing, grepping, and comparing compressed files.

  1、这里提到了一句,与 LC_ALL 区域的相关的问题,一般情况下,这个变量不需要修改,就算

·         Emulation of command line tools of LZMA Utils eases transition from LZMA Utils to XZ Utils.

不设置为 LC_ALL=C 也没有关系。一般情况下这个变量的值为空。

While liblzma has a zlib-like API, liblzma doesn't include any file I/O functions. A separate I/O library is planned, which would abstract handling of .gz, .bz2, and .xz files with an easy to use API.

  2、编译第一步:执行  ./configure 文件

 

./configure --disable-shared --prefix=/tmp/xz-test

 

  这一句用来配置编译过程,  --disable-shared 的意思是禁止共享,

XZ的安装

               --prefix=/tmp/xz-test  表示编译后将xz安装到 /tmp/xz-test 目录下。

 

  3、更新po文件,

从官方网址下载

make -C po update-po

 

  这个命令的意思,没啥好解释的  -C po 指定Makefile的搜索路径, update-po 表示执行这个目标

tar -xzvf xz-5.2.3.tar.gz

  4、编译和安装

cd xz-5.2.3

make install

./configure

  执行这个命令后,就将xz工具编译后,并安装到  /tmp/xz-test 目录下。 

make

  我就是这么做的,所以执行  /test/xz-test/bin/xz    --help 后显示如下:

make install

[root@localhost linux-2.6.32.61]# /tmp/xz-test/bin/xz  --help
Usage: /tmp/xz-test/bin/xz [OPTION]... [FILE]...
Compress or decompress FILEs in the .xz format.

  -z, --compress      force compression
  -d, --decompress    force decompression
  -t, --test          test compressed file integrity
  -l, --list          list information about .xz files
  -k, --keep          keep (don't delete) input files
  -f, --force         force overwrite of output file and (de)compress links
  -c, --stdout        write to standard output and don't delete input files
  -0 ... -9           compression preset; default is 6; take compressor *and*
                      decompressor memory usage into account before using 7-9!
  -e, --extreme       try to improve compression ratio by using more CPU time;
                      does not affect decompressor memory requirements
  -q, --quiet         suppress warnings; specify twice to suppress errors too
  -v, --verbose       be verbose; specify twice for even more verbose
  -h, --help          display this short help and exit
  -H, --long-help     display the long help (lists also the advanced options)
  -V, --version       display the version number and exit

With no FILE, or when FILE is -, read standard input.

Report bugs to <lasse.collin@tukaani.org> (in English or Finnish).
XZ Utils home page: <http://tukaani.org/xz/>

 

  如果你觉得麻烦,可以将路径: /tmp/xz-test/bin  添加到环境变量 PATH 中,或者临时导出一下也行。

XZ的使用

  -d:  解压缩

 

  -z: 压缩文件

** 

  -t: 测试文件的一致性

-z

force compression

压缩文件

-d

force decompression

解压文件

-t

test compressed file integrity

测试压缩文件完整性

-l

list information about .xz files

列出压缩文件.xz的一些信息

-k

keep (don't delete) input files

保留被解压缩的文件

-f

force overwrite of output file and (de)compress links

强制覆盖输出文件和(de)压缩链接

-c

write to standard output and don't delete input files

压缩输入标准输出并保留被压缩的文件。

-0 … -9

compression preset; default is 6; take compressor *and*                    decompressor memory usage into account before using 7-9!

压缩率预设参数 -0 到 -9调节压缩率。如果不设置,默认压缩等级是6

-e

try to improve compression ratio by using more CPU time;                      does not affect decompressor memory requirements

尝试通过使用更多的CPU时间来提高压缩比; 不影响解压内存的要求

-T

use at most NUM threads; the default is 1; set to 0 to use as many threads as there are processor cores

压缩的线程数量。默认为1,设置为0表示跟处理器核数匹配

-q

suppress warnings; specify twice to suppress errors too

抑制警告 指定两次以抑制错误

-v

be verbose; specify twice for even more verbose

显示压缩、解压详细信息

-H

display the long help (lists also the advanced options)

显示更多的帮助信息,包含告警选项。

-V

display the version number and exit

显示版本信息并退出

  -l: 列出文件的信息

 

命令如下执行:

 

 /tmp/xz-test/bin/xz  -d  linux-2.6.32.2.xz  

解压文件方法1

  就可以解压你的xz文件了。

 

 

[root@DB-Server tmp]# xz -d Python-2.7.8.tar.xz 

 

[root@DB-Server tmp]# tar -xf Python-2.7.8.tar

  今天这个话题就说到这,希望能给你的系统使用带来方便。

 

解压文件方法2,一次性搞定,但是需要tar支持,有些低版本tar并不支持

 

[root@DB-Server tmp]#tar -Jxf Python-2.7.8.tar.xz 

 

压缩文件

 

[root@DB-Server tmp]# xz -z Python-2.7.8.tar 

 

或

 

[root@DB-Server tmp]#tar -Jcf Python-2.7.8.tar.xz Python-2.7.8/

 

 

查看压缩文件信息

 

[root@DB-Server tmp]# xz -l Python-2.7.8.tar.xz

 

Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename

 

    1       1     10.0 MiB     63.2 MiB  0.159  CRC64   Python-2.7.8.tar.xz

 

[root@DB-Server tmp]# 

 

压缩比例简单测试:

 

 

[root@DB-Server tmp]# ls -lrt Python-2.7.8.tar 

-rw-r--r-- 1 root root 66263040 Sep 21 22:49 Python-2.7.8.tar

[root@DB-Server tmp]# xz -z Python-2.7.8.tar 

[root@DB-Server tmp]# ls -lrt Python-2.7.8.tar.xz 

-rw-r--r-- 1 root root 10525244 Sep 21 22:49 Python-2.7.8.tar.xz

[root@DB-Server tmp]# xz -d Python-2.7.8.tar.xz 

[root@DB-Server tmp]# gzip  Python-2.7.8.tar 

[root@DB-Server tmp]# ls -lrt Python-2.7.8.tar.gz 

-rw-r--r-- 1 root root 14991942 Sep 21 22:49 Python-2.7.8.tar.gz

[root@DB-Server tmp]# gizp -d Python-2.7.8.tar.gz 

-bash: gizp: command not found

[root@DB-Server tmp]# gzip -d Python-2.7.8.tar.gz 

[root@DB-Server tmp]# zip  Python-2.7.8.tar.gzip  Python-2.7.8.tar 

  adding: Python-2.7.8.tar (deflated 77%)

[root@DB-Server tmp]#  ls -lrt Python-2.7.8.tar.gzip 

-rw-r--r-- 1 root root 14992071 Sep 22 12:11 Python-2.7.8.tar.gzip

 

如上简单测试所示, gzip、zip、xz压缩的大小对比

 

     Python-2.7.8.tar.xz              10525244

     Python-2.7.8.tar.gz              14991942

     Python-2.7.8.tar.gzip            14992071

 

澳门新濠3559 1

 

 

参考资料:

 

编辑:操作系统 本文来源:它在.xz容器格式中使用,而前面的压缩和解压缩

关键词:

  • 上一篇:没有了
  • 下一篇:没有了