归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar

时间:2022-05-14 09:11:24
     在linux上复制/etc/services到根目录进行测试,文件的信息如下图所示
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 
 1) gzip命令的使用格式如下
   gzip [options] fileName...
   选项
     -c :
把压缩文件后的生成内容输出到标准输出当中,而不会改变原文件本身
     -[1-9] :指定压缩比,压缩比越大,压缩速度超慢,默认值为6

 使用 gzip 命令进行压缩
 # gzip services
 gzip命令会在压缩完成后,生成以 .gz 为后缀的压缩文件并将原文件删除
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 如果想要在压缩后保留原文件可以使用以下方法
 # gzip -c services > services.gz
 加上 -c 选项后, gzip会把压缩文件后的生成内容输出到标准输出当中,而不会改变原文件本身,
 此时再使用重定向把标准输出的内容保存为以 .gz 结尾的文件即可
 
 对于以 .gz 为后缀的压缩文件,可以使用 -d 选项进行解压缩
 # gzip -d services.gz
 解压缩完成后, gzip会把压缩文件给删除
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 而解压缩以 .gz 为后缀的压缩文件也可以使用gunzip命令来进行,起到的效果是一样的,如下
 # gunzip services.gz

 如果想在不解压的情况下查看以 .gz 为后缀的压缩文件的内容,可以使用zcat命令
 # zcat service.gz | less
 因为压缩文件的内容可能很多,所以可以通过管道送给less进行查看


 
 
 2) bzip2命令的使用格式如下
   bzip2 [options] fileName...
   选项
     -c :
把压缩文件后的生成内容输出到标准输出当中,而不会改变原文件本身
     -[1-9] :指定压缩比,压缩比越大,压缩速度超慢,默认值为6

 使用 bzip2 命令进行压缩
 # bzip2 services
 bzip2命令会在压缩完成后,生成以 .bz2 为后缀的压缩文件并将原文件删除
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 
 如果想要在压缩后保留原文件可以使用以下方法
 # bzip2 -c services > services.bz2
 加上 -c 选项后, bzip2会把压缩文件后的生成内容输出到标准输出当中,而不会改变原文件本身,
 此时再使用重定向把标准输出的内容保存为以.bz2结尾的文件即可
 上面这种方法类似于 "gzip -c services > services.gz",而对于bzip2还有另外一个选项可用 -k 起到同样的效果
 # bzip2 -k services

 对于以 .bz2 为后缀的压缩文件,可以使用 -d 选项进行解压缩
 # bzip2 -d services.bz2
 解压缩完成后, bzip2会把压缩文件给删除

 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 而解压缩以 .bz2 为后缀的压缩文件也可以使用bunzip2命令来进行,起到的效果是一样的,如下
 # bunzip2 services.bz2


 如果想在不解压的情况下查看以 .bz2为后缀的压缩文件的内容,可以使用bzcat命令
 # bzcat service.bz2 | less
 因为压缩文件的内容可能很多,所以可以通过管道送给less进行查看



 3) xz命令的使用格式如下
   xz [options] fileName...
   选项
     -c :把压缩文件后的生成内容输出到标准输出当中,而不会改变原文件本身

     -[1-9] :指定压缩比,压缩比越大,压缩速度超慢,默认值为6

 使用 xz 命令进行压缩
 # xz services
 xz命令会在压缩完成后,生成以 .xz 为后缀的压缩文件并将原文件删除
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar

 如果想要在压缩后保留原文件可以使用以下方法
 # xz -c services > services.xz
 加上 -c 选项后, xz会把压缩文件后的生成内容输出到标准输出当中,而不会改变原文件本身,
 此时再使用重定向把标准输出的内容保存为以.xz结尾的文件即可
 上面这种方法类似于 "gzip -c services > services.gz",而对于xz还有另外一个选项可用 -k 起到同样的效果
 # xz -k services


 对于以 .xz 为后缀的压缩文件,可以使用 -d 选项进行解压缩
 # xz -d services.xz
 解压缩完成后, xz会把压缩文件给删除

 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 而解压缩以 .xz 为后缀的压缩文件也可以使用unxz命令来进行,起到的效果是一样的,如下
 # unxz services.xz


 如果想在不解压的情况下查看以 .xz为后缀的压缩文件的内容,可以使用xzcat命令
 # xzcat service.xz | less
 因为压缩文件的内容可能很多,所以可以通过管道送给less进行查看


 


 而gzip, bzip2, xz三者的缺点是都不能压缩目录,如果硬要压缩目录,会产生如下错误信息
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar

 此时我们可以使用zip这个归档和压缩命令
 4) zip命令的使用格式如下
   zip [options] DEST SRC...
   选项
     -r :递归压缩目录中的文件

 
 使用zip 命令压缩多个文件或目录
 # zip -r abc.zip abc
 与gzip, bzip2, xz不同, zip命令压缩完成后,生成以 .zip 的压缩文件但其并不会删除原文件
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar

 而解压缩以 .zip 为后缀的压缩文件,我们使用 unzip命令,如下
 # unzip abc.zip
 解压缩完成后, unzip并不会把压缩文件给删除
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar




 而讲到归档,当然不能不讲 tar 命令,光是看tar命令的man文档就一把汗,但是这里仅总结一些比较常用的选项
 5) tar 命令的使用格式如下
   tar [options...] DEST SRC...
   选项
     -c :将多个文件或目录打包成单个文件
     -v :显示打包过程中的详细信息
     -f :指定打包后生成的文件名
     -z :在打包过程中调用 gzip  对生成的打包文件压缩
     -j :在打包过程中调用 bzip2 对生成的打包文件压缩
     -J :在打包过程中调用 xz  对生成的打包文件压缩
     -C :在解压缩时,指定解压目录

 
 使用tar命令归档多个文件或目录
 # tar -cvf back.tar abc abc.zip
 与zip命令类似, tar命令归档完成后,生成以 .tar 的归档文件但其并不会删除原文件
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 注: -c选项表示归档, -v选项表示显示归档的详细信息, -f选项表示归档后生成的文件名(-f 必须紧跟生成的文件名)

 接下来就可以使用 gzip, bzip2 或 xz 这些命令进行压缩,但是在tar命令归档时,其提供了某些选项给我们在归档的
 过程中调用 gzip, bzip2, xz 等命令进行压缩,如下
 在归档过程中通过选项 -z 调用 gzip 对归档文件进行压缩生成以 .gz 结尾的压缩文件
 # tar -czvf back.tar.gz abc abc.zip
 对应的解压缩同时将归档文件解包的命令为 # tar -xzvf back.tar.gz
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 

 在归档过程中通过选项 -j 调用 bzip2 对归档文件进行压缩生成以 .bz2 结尾的压缩文件
 # tar -cjvf back.tar.bz2 abc abc.zip
 对应的解压缩同时将归档文件解包的命令为 # tar -xjvf back.tar.bz2
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
 

 在归档过程中通过选项 -J 调用 xz 对归档文件进行压缩生成以 .xz 结尾的压缩文件
 # tar -cJvf back.tar.xz abc abc.zip
 对应的解压缩同时将归档文件解包的命令为# tar -xJvf back.tar.xz
 归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar



总结:
1)
 压缩    解压缩      不解压查看  压缩并保留原文件
 gzip  "gzip -d 或 gunzip"   zcat   "gzip -c fileName > fileName.gz"
 bzip2 "bzip2 -d 或 bunzip2"  bzcat   "bzip2 -c fileName > fileName.bz2"
 xz   "xz -d 或 unxz"     xzcat   "xz -c fileName > fileName.xz"
 
 zip   unzip         未知    并不删除原文件

注:A) .zip这种类型的压缩格式是windows和Linux都支持的一种格式
  B) 压缩并保留原文件,对于bzip2和xz还可以有以下形式:
   # bzip2 -k fileName
   # xz -k fileName

2)
不同的压缩命令在相比的压缩比下,对相同的文件进行压缩所产生的压缩率也是不同的,如图
归档与压缩命令的总结 -- gzip, gunzip, zcat, bzip2, bunzip2, bzcat, xz, unxz, xzcat, zip, unzip, tar
我们可以看出,压缩率 xz > bzip2 > gzip

3)
 tar 命令的使用格式如下
 tar [options...] DEST SRC...
 选项
     -c :将多个文件或目录打包成单个文件
     -v :显示打包过程中的详细信息
     -f :指定打包后生成的文件名
     -z :在打包过程中调用 gzip  对生成的打包文件压缩
     -j :在打包过程中调用 bzip2 对生成的打包文件压缩
     -J :在打包过程中调用 xz  对生成的打包文件压缩
     -C :在解压缩时,指定解压目录