Linux命令-压缩与解压缩

在Linux系统中,常常可以看到各种后缀名,如tar、gz、bz2、tgz等等,这些后缀名都是什么意思,应该用何种方式来进行解压,都是一个不小的挑战。对已常见的压缩格式,各位同学应该都能使用,本文只是作为备忘录,最近被这些后缀名搞得有点头大,每次解压或者压缩都要去搜下,不如自己做个总结记下来,以供自己和后来人使用。

压缩功能有明显的好处,在*nux系统中,各种文件下载,网络传输都是使用压缩格式的方法。最重要的是使用压缩具有明显的一下特点:减少存储空间、减小网络传输时间。这些特点足够作为理由来使用压缩特性。所以从网络上下载下来分发包,都是经过打包和压缩的;重点是压缩格式繁多,而*nix的开源特性也使得其支持各种压缩格式,所以本文的有些压缩格式在你自己的系统里面未必是支持的,有可能需要安装额外的安装包。

1tar

tar命令既是文件格式,又是Linux系统下的文件打包工具,注意tar命令是打包工具,所以该命令没有压缩与解压缩功能。wiki参见这里

打包:tar cf log.tar file.log

解包:tar xf file.tar

其中参数c=createf=file,一般会添加个v参数,v=verbose

tar命令也提供了压缩选型,-a=auto-compress-j=bzip2 -J=xz --lzip --lzma --lzop -z=gzip -Z=compress

扫描二维码关注公众号,回复: 643073 查看本文章

不过如果自己用的话,一般是用来打包用,如果对命令熟悉的话,可以结合这些压缩功能

2gzDEFLATE算法,是LZ77Huffman Coding算法的结合,作为LZW的替代者。算法细节见http://en.wikipedia.org/wiki/Gzip

该算法压缩率还是不错的,特别是对于log来说

解压:gunzip file.log.gz 或者 gzip -d file.log.gz

压缩:gzip file.log

3tar.gztgz

从名字上面可以看出来,该文件先进行了tar操作,又进行了gzip操作,那么我们解压的时候可以选择进行反向操作。

gunzip file.tar.gz | tar xvf -

gunzip file.tgz | tar xvf -

注意上面的压缩操作并不支持管道操作,我只是这样写而已,注意最后的-,大家理解就行了,你自己测试时请分开操作。

另外这两种文件格式使用的非常广泛,tar命令直接对这些文件格式进行了支持

tar xvzf file.tar.gz

tar xvzf fiel.tgz

4bz2

bz2bzip2的压缩算法,wiki见这里http://en.wikipedia.org/wiki/Bzip2,算法官网见这里:http://www.bzip.org/

bz2的压缩效率高于LZW.Z)和DEFLATE.zip and .gz),但是速度要慢。算法实现的细节可以参考上面两个网站

压缩:bzip2 file.log

解压:bunzip2 file.log.bz2 或者 bzip2 -d file.log.bz2

添加f参数可以覆盖掉已经存在的文件,最好加上v参数

5tar.bz2 或者 tbz 或者 tbz2 或者 tb2

这些后缀名和上面tgz的解释一样,先打包再压缩生成压缩文件,解压就可以先解压再解包还原文件。

压缩:tar cvf file.tar file.log | bzip2 -

解压:bzip2 -d file.tar.bz2 | tar xvf -

另外tar参数也对这种格式直接进行了支持

压缩:tar jcvf file.tar.bz2 file.log

解压:tar jxvf file.tar.bz2

6zip

压缩:zip file.zip file.log

解压:unzip file.zip

7lzo

lzo后缀名是Lempel-Ziv-Oberhumer算法的前缀组合,wiki见这里:http://en.wikipedia.org/wiki/LZO,是一种无损数据压缩算法,在该wiki页面下方有个无损压缩算法的列表,算法比较多,大家如果有兴趣的话,可以参考,作为拓展的内容。

本算法在压缩速度上可以和DEFLATE相比拟,又有非常好的解压速度,在压缩过程中额外的buffer和内存,最重要的是能够在不影响解压速度的情况下调整压缩比例和压缩速度的平衡,这个是个非常好的特性。这个算法讲这么多,是因为在HadoopHDFS中存储的文件就支持LZO压缩算法,并且作为Mapper的输入文件,对于LZO有原生的支持。当然输出文件也支持LZO压缩。该算法会在后面继续分析,这里先介绍下。

压缩:lzop file.log

解压:lzop -d file.log.lzo

 

 

 

在Linux系统上还有很多的其它压缩类型,不过大家常用的应该就是这些。另外对于每种压缩格式命令,还有很多的参数可以调整,具体细节大家可以等到具体用到的时候再行研究。本文作为引子给大家使用shell命令行时做个参考,如果还有什么常用的压缩算法本文没有提到,请告诉我,我再给补上。

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自isilic.iteye.com/blog/1753785
今日推荐