在Linux中可以识别的常见压缩格式有十几种,最常用的是 gzip,bzip2,tar,zip等。

减少文件大小有两个明显的好处:

    1)是可以减少存储空间,

    2)是通过网络传输文件时,可以减少传输的时间。

一、gzip,gunzip命令

       文件经gzip压缩命令过后,其名称后面会多出“.gz”的扩展名。gzip命令对文本文件大概有60%~70%的压缩率。

注意:只能压缩文件,不能压缩目录,压缩后不保留原始文件。

语法:gzip [参数] [filenames]

参数

  • -a或--ascii  使用ASCII文字模式。
  • -c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。
  • -d或--decompress或----uncompress  解开压缩文件。
  • -f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
  • -h或--help  在线帮助。
  • -l或--list  列出压缩文件的相关信息。
  • -L或--license  显示版本与版权信息。
  • -n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。
  • -N或--name  压缩文件时,保存原来的文件名称及时间戳记。
  • -q或--quiet  不显示警告信息。
  • -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
  • -S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。
  • -t或--test  测试压缩文件是否正确无误。
  • -v或--verbose  显示指令执行过程。
  • -V或--version  显示版本信息

1、压缩和解压缩当前目录下的文件

    1)压缩:gzip -v FileName 

    

    列出某压缩文件的相关信息

     

2)解压缩: gunzip -v FileName.gz  或者  gzip -dv FileName.gz

     

2、压缩和解压缩目录(本质压缩的是其下的文件,不推荐)

    1)压缩:gzip -rv FileName      

    

    2)解压缩:gunzip -rv FileName.gz  或者  gzip -drv FileName.gzv

     

二、bzip2,bunzip2命令

      bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好,压缩比要比gzip更高一些。

      若没有加上任何参数,bzip2压缩完文件后会产生一个“.bz2”扩展名的压缩文件,并删除原始的文件。

      注意:只能压缩文件,不能压缩目录,-k 压缩后保留原始文件。

语法:bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- 压缩等级][要压缩的文件]

参数

  • -c或--stdout  将压缩与解压缩的结果送到标准输出。
  • -d或--decompress  执行解压缩。
  • -f或--force  bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。
  • -h或--help  显示帮助。
  • -k或--keep  bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。
  • -s或--small  降低程序执行时内存的使用量。
  • -t或--test  测试.bz2压缩文件的完整性。
  • -v或--verbose  压缩或解压缩文件时,显示详细的信息。
  • -z或--compress  强制执行压缩。
  • -L,--license,显示版本与版权信息。
  • -V或--version  显示版本信息。
  • --repetitive-best  若文件中有重复出现的资料时,可利用此参数提高压缩效果。
  • --repetitive-fast  若文件中有重复出现的资料时,可利用此参数加快执行速度。
  • -压缩等级  压缩时的区块大小。

1、压缩和解压缩当前目录下的文件,压缩后不保留原始文件

    1)压缩: bzip2 -v FileName      

    

    2)解压缩:bunzip2 -v FileName.bz2  或者  bzip2 -dv FileName.bz2

    

2、压缩和解压缩当前目录下的文件,压缩后保留原始文件

    1)压缩:bzip2 -kv FileName

    

    2)解压缩:bunzip2 -v FileName.bz2  或者  bzip2 -dv FileName.bz2

      

三、tar 打包/拆包命令

       虽然 gzip与bzip2 可以单独工作,但是,最常用的方式还是结合 tar 命令一起来用。在日常的工作中,拆包解压,绝对要比压缩打包的次数多得多。

       这是因为在实际生产环境中,我们遇到的情况通常不是只针对一个文件进行压缩,而是针对多个文件和文件夹一起打包并压缩。而 tar 就是用来打包用的。

      注意:文件打包后会产生一个“.tar ”扩展名的打包文件,保留原始文件。拆包也保留打包的文件

语法:

打包:tar [参数]  DirName/FileName.tar DirName
拆包:tar [参数]  DirName/FileName.tar

参数

  • -z  表示用 gzip 进行压缩或解压缩。如果同时使用了 -x 选项,则表示解压。如果使用了 -c 选项,则表示压缩。
  • -j   表示用 bzip2 进行压缩或解压缩。如果同时使用了 -x 选项,则表示解压。如果使用了 -c 选项,则表示压缩。
  • -c  表示要进行打包动作。
  • -x  表示要进行拆包动作。
  • -v  表示在打包过程中直播整个过程,把已打包的文件显示出来。
  • -f   表示指定要打包的文件,完全可以指定多个,文件夹和文件都可以。
  • -t  表示列出打包文件中的内容,
  • -k  表示保留原有文件不覆盖
[root@centos7 ~]# mkdir ./abc/aa_dir/aa1_dir
[root@centos7 ~]# touch ./abc/aa_dir/aa1_dir/a1.txt  
[root@centos7 ~]# tree ./abc
./abc
├── aa_dir
│   ├── aa1_dir
│   │   └── a1.txt
│   ├── aa.txt
│   └── file3.cfg
├── bb_dir
├── file2.cfg
└── test22
    ├── anaconda-ks.cfg
    └── test_d

5 directories, 5 files

对 aa_dir 目录下的文件操作,将文件打包之后就可以使用压缩与解压命令,最常用就是两者一起使用

1、打包和拆包

    1)打包:tar -cvf FileName.tar DirName

     

    2)拆包:tar -xvf FileName.tar

     

2、gzip 压缩打包和拆包解压

    1)gzip 压缩打包:tar -zcvf FileName.tar.gz DirName

    

    2)gzip 拆包解压:tar -zxvf FileName.tar.gz

    

3、bzip2压缩打包和拆包解压

    1)bzip2 压缩打包:tar -jcvf FileName.tar.bz2 DirName

    

    2)bzip2 拆包解压:tar -jxvf FileName.tar.bz2

    

4、不想拆包解压,只想看看压缩打包中的内容

      gzip压缩打包文件:  tar -ztvf FileName.tar.gz

      bzip2压缩打包文件:tar -jtvf FileName.tar.bz2

  

 四、zip,unzip命令

    注意:压缩后保留原始文件,压缩比不如gzip,而且linux一般不用,只是作为和windows系统互联用

   Centos7 没有这两个命令,需要先安装

[root@centos7 ~]# rpm -qa zip
[root@centos7 ~]# rpm -qa unzip
[root@centos7 ~]# yum list | grep "^zip"
zip.x86_64                                  3.0-11.el7                 CentOS7  
[root@centos7 ~]# yum list | grep "^unzip"
unzip.x86_64                                6.0-19.el7                 CentOS7 
[root@centos7 ~]# yum -y install zip
[root@centos7 ~]# yum -y install unzip

语法:

压缩:zip [选项] 压缩后文件名 文件或目录

解压缩:unzip 文件名

参数

  • -v 显示指令执行过程或显示版本信息。
  • -r 递归处理,将指定目录下的所有文件和子目录一并处理。
  • -t  表示列出打包文件中的内容

1、压缩和解压缩目录下的文件

   

  

2、压缩和解压缩目录下的递归文件

   

   

 3、不想解压缩,只想看看压缩文件中的内容

    

常用解压/压缩命令总结:

gzip
压缩:gzip -v FileName 
解压:gunzip -v FileName.gz  或者  gzip -dv FileName.gz

bzip2
压缩:bzip2 -v FileName      
解压:bunzip2 -v FileName.bz2  或者  bzip2 -dv FileName.bz2

tar
打包:tar -cvf FileName.tar DirName
解包:tar -xvf FileName.tar
(注:tar是打包,不是压缩!)

gzip+tar 
压缩打包:tar -zcvf FileName.tar.gz DirName
拆包解压:tar -zxvf FileName.tar.gz

bzip2+tar 
压缩打包:
拆包解压:

zip
压缩:zip FileName.zip DirName
解压:unzip FileName.zip
# -d选项:可以指定解压到指定的目录(相对路径或者绝对路径)。
解压:unzip FileName.zip -d /var/FileName

    更多命令参数选项查看帮助

    站在前辈的肩膀上,每天进步一点点

ends~

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐