Linux文件压缩、解压、归档总结

一、简介

  压缩对我们来说通常意味着减小文件体积,节省硬盘空间。在Windows平台上处理大文件或目录中的文件很多时我们都需要对这些文件进行压缩处理,压缩格式多种多样,如:zip、rar、7z等格式,压缩方式也比较多样话,支持按最大压缩比例或者最快时间进行压缩等多种方式,而生成的压缩包就可以让我们更方便的进行拷贝及归档整理。解压缩顾名思义就是回归本源,把压缩包里的文件还原成原本的样子。同样在Linxu平台上有“一切皆文件”的说明,因此对文件的压缩、解压、归档更是我们日常工作中必须要掌握的技能。

二、用法详解

 常见的压缩解压命令有如下几种形式:

 compress/uncompress .Z (Unix下比较常见)

 gzip/gunzip .gz (压缩率稍高,不支持目录压缩)

 bzip2/bunzip2 .bz2 (压缩率很高,不支持目录压缩)

 xz/unxz .xz (目前压缩率最高,不支持目录压缩)

 zip/unzip .zip (通用性最高,支持多个文件压缩归档成一个文件)

1.gzip压缩后的文件后缀名为.gz,压缩完之后原文件会被自动删除,gunzip解压缩完成之后原压缩包也会被自动删除。语法格式为:gzip [OPTIONS] /PATH/TO/SOMEFILE …

    -#: 指明压缩比;1-9,默认为6,数字越大,压缩比越大(消耗CPU资源比越多,时间越慢);

    -d: decompress, 解压缩, 相当于gunzip;

    -c: 将压缩后的数据输出至标准输出;

    gzip -c /PATH/TO/SOMEFILE > /PATH/TO/SOMEFILE.gz

    -r: 递归至目录中对每个文件进行压缩;

    zcat /path/to/somefile.gz:无须显式解压缩查看压缩文件的内容;

例:把500MB的a.txt文件进行gzip压缩,命令为:gzip a.txt ,详情见下图:

blob.png

例:把2.1MB的a.txt.gz文件进行解压还原成原文件,命令为:gunzip a.txt 或 gzip -d a.txt,详情见下图:

blob.png

例:把500MB的a.txt文件按最大比例进行gzip压缩,命令为:gzip -9 a.txt ,详情见下图:

blob.png

例:a.txt压缩后保留原文件并生成新文件b.txt.gz,命令为:gzip -c a.txt > b.txt.gz ,详情见下图:

blob.png

例:实现把test1目录中所有的文件单独压缩成gz文件,命令为:gzip -r test1 ,详情见下图:

blob.png例:使用zcat命令可以不用解压缩(理论上有可能解压到内存或其他临时目录中,待验证)直接查看functions.gz中的文件内容,命令为:zcat test1/functions.gz ,详情见下图:

blob.png

2.bzip2压缩后的文件后缀名为.bz2,压缩完之后原文件会被自动删除,bunzip2解压缩完成之后原压缩包也会被自动删除。语法格式为:bzip2 [OPTIONS] /PATH/TO/SOMEFILE…

    -#: 指明压缩比;1-9,默认为6,数字越大,压缩比越大;

    -d: decompress, 解压缩, 相当于bunzip2;

    -k: 压缩后保留原文件;

    bzcat /path/to/somefile.bz2:无须显式解压缩查看压缩文件的内容;

例:把458MB的a.txt文件进行bzip2压缩,命令为:bzip2 -k a.txt ,详情见下图:

blob.png

例:把1.8KB的a.txt.bz2文件进行解压还原成原文件,命令为:bzip2 -d a.txt.bz2 或 bunzip2 a.txt.bz2,详情见下图:

blob.png

例:把458MB的a.txt文件按最大比例进行bzip2压缩,命令为:bzip2 -9 a.txt ,详情见下图:

blob.png

例:使用bzcat命令可以不用解压缩(理论上有可能解压到内存或其他临时目录中,待验证)直接查看a.txt.bz2中的文件内容,命令为:bzcat a.txt.bz2 ,详情见下图:

blob.png

3.xz压缩后的文件后缀名为.xz,压缩完之后原文件会被自动删除,unxz解压缩完成之后原压缩包也会被自动删除。语法格式为:xz [OPTIONS] /PATH/TO/SOMEFILE…

       -#: 指明压缩比;1-9,默认为6,数字越大,压缩比越大;

       -d: decompress, 解压缩, 相当于bunzip2;

       -k: 压缩后保留原文件;

       xzcat /path/to/somefile.xz:无须显式解压缩查看压缩文件的内容;

例:把458MB的a.txt文件进行xz压缩,命令为:xz -k a.txt ,详情见下图:

blob.png

例:把458MB的a.txt文件进行xz -1和xz-9压缩,命令为:xz -k1 a.txt xz-k9 a.txt ,详情见下图:

blob.png

例:使用xzcat命令可以不用解压缩(理论上有可能解压到内存或其他临时目录中,待验证)直接查看a.txt.xz中的文件内容,命令为:xzcat a.txt.xz ,详情见下图:

blob.png

4.zip压缩后的文件后缀名为.zip,压缩时必须手动指定压缩后生成的压缩包文件名,可以把多个文件压缩归档成一个文件,压缩完之后原文件会被自动删除,unzip解压缩完成之后原压缩包也会被自动删除。zip语法格式为:zip ZIP_FILE.zip /PATH/TO/SOMEFILE…

unzip语法格式为:unzip ZIP_FILE.zip

例:把458MB的a.txt和b.txt两个文件合并压缩成一个ab.zip压缩包文件,命令为:zip ab.zip a.txt b.txt ,详情见下图:      

blob.png

例:把3.2MB的ab.zip压缩包文件解压还原成a.txt和b.txt文件,命令为:unzip ab.zip,详情见下图:

blob.png

5.归档可以将多个文件打包(合并)为单个文件以便于管理。默认不会执行压缩。语法格式为:

归档:tar [OPTIONS] -c -f /PATH/TO/TARFILE.tar /PATH/TO/FILE…

归档:不会删除原文件;

展开归档:tar -x -f /PATH/TO/TARFILE.tar [-C /PATH/TO/DIR]

查看被归档起来的文件列表:tar -t -f /PATH/TO/TARFILE.tar

注意:(1) 多个选项可以合并,但-f由于要带参数,因此,应该放在最右侧;如:-tf, -xf, -cf

(2) 选项的引导符-可省略;如:tar xf , tar zf中的-xf这个"-"可以省略。

例:把a.txt和b.txt两个文件创建生成归档文件ab.tar(归档文件并不对原文件进行压缩),

命令为:tar -cf ab.tar a.txt b.txt ,详情见下图:

blob.png

例:把ab.tar这个归档文件展开到bak目录下,

命令为:tar -xf ab.tar -C ../bak ,详情见下图:

blob.png

例:不展开归档文件,直接查看归档文件包中的文件(只显示文件列表,非文件内容),命令为:tar -tf ab.tar,详情见下图:

blob.png

blob.png

6.tar命令支持归档并压缩,常用格式如下:

    -z: gzip

    后缀名: .tar.gz

    归档并压缩:tar -zcf

    展开归档:tar -zxf 

     -j: bzip2

     后缀名: .tar.bz2

     归档并压缩:tar -jcf

     展开归档: tar -jxf

     -J: xz

     后缀后: .tar.xz

     归档并压缩: tar -Jcf

     展开归档: tar -Jxf

注意:展开归档可以直接使用tar -xf,而无须为其指定对应的压缩工具选项。

例:把原文件直接归档并压缩成.tar.gz格式的压缩包,命令为:tar -zcf ab.tar.gz a.txt b.txt,详情见下图:

blob.png

例:对归档压缩后的文件进行展开并解压还原成原文件,指定解压目录为当前目录,命令为:tar -zxf ab.tar.gz -C ./,详情见下图:

blob.png

例:把原文件直接归档并压缩成.tar.bz2格式的压缩包,命令为:tar -jcf ab.tar.bz2 a.txt b.txt,详情见下图:

blob.png例:对归档压缩后的文件进行展开并解压还原成原文件,指定解压目录为当前目录,命令为:tar -jxf ab.tar.bz2 -C ./,详情见下图:

blob.png例:把原文件直接归档并压缩成.tar.xz格式的压缩包,命令为:tar -Jcf ab.tar.xz a.txt b.txt,详情见下图:

blob.png

例:对归档压缩后的文件进行展开并解压还原成原文件,指定解压目录为当前目录,命令为:tar -Jxf ab.tar.xz -C ./ 或 tar -Jxf ab.tar.xz  (-C参数可省略,如省略则解压到当前目录下),详情见下图:

blob.png

原创文章,作者:镜花水月,如若转载,请注明出处:http://www.178linux.com/8330

评论列表(2条)

  • 云中鹤
    云中鹤 2015-09-26 22:45

    兄台,问一下你的联系方式,博客写的这么好,像你学习啊。

  • Vicky
    Vicky 2015-09-27 16:06

    写的很详细,很认真,赞!