参数

作用

命名方式

-z

用于gzip压缩方式

文件名.tar.gz

-j

用于bzip2压缩方式

文件名.tar.bz2

-J

用于xz压缩方式

文件名.tar.xz

实例:用不同的压缩方式压缩/root/目录下的Golden.apk文件

先查看Golden.apk文件的大小:

docker war包解压 docker中解压zip文件命令_压缩文件

可以看到Golden.apk文件的大小为187M

a.用gzip压缩方式将Golden.apk文件压缩为Golden.apk.tar.gz文件:

docker war包解压 docker中解压zip文件命令_运维_02

b.用bzip2的压缩方式将Golden.apk文件压缩为Golden.apk.tar.bz2文件:

docker war包解压 docker中解压zip文件命令_面试_03

从上图可以看出红色方框内有报错,这个报错的原因是缺少bzip2的包,需要安装一个bzip2软件包

docker war包解压 docker中解压zip文件命令_运维_04

安装完成之后再重新压缩:

docker war包解压 docker中解压zip文件命令_面试_05

在压缩的过程中,我们可以发现:

压缩速度:gz > bz2 > xz
压缩率:xz > bz2 > gz

docker war包解压 docker中解压zip文件命令_面试_06

三、解压

先删除/root/目录下的Golden.apk文件:

docker war包解压 docker中解压zip文件命令_linux_07

tar命令式一个很聪明的命令,我们在解压的时候不需要指明自己压缩的方式它会自己选择跟压缩方式对应的方式去解压,这话说得有点拗口,例:

a.将Golden.apk.tar.gz解压到当前目录:

docker war包解压 docker中解压zip文件命令_压缩文件_08

在解压gz压缩方式压缩文件的时候并不需要加上-z,直接用参数-xf即可,另外两种压缩方式在解压的时候一样,因为tar命令会自动选择,解压之后压缩文件还在,如果不指定解压出来的文件保存在哪里,那么会直接解压在当前目录

b.指定解压出来的文件保存的目录,将Golden.apk.tar.bz2文件解压在/opt/目录下:

docker war包解压 docker中解压zip文件命令_docker war包解压_09

补充:

a.在打包和压缩的过程中,我们有时候会看到这样的语句:tar: 从成员名中删除开头的“/”,这个并不是报错,是因为没有加上-P选项,没有保留原来的绝对路径去打包或者压缩,提取打包的内容跟解压一样,下面举一个例子:

将/root/目录以gzip的方式压缩为root.tar.gz压缩文件:

1.没有加-P选项:

docker war包解压 docker中解压zip文件命令_压缩文件_10

2.加上-P选项:

docker war包解压 docker中解压zip文件命令_压缩文件_11

解压的时候同理,如果在压缩文件的时候使用了-P选项,那么在解压的时候也要加上-P选项,不然也会出现”tar: 从成员名中删除开头的“/”“,如下图:

1.不加-P选项解压使用了-P选项压缩/root/后的root.tar.gz文件:

docker war包解压 docker中解压zip文件命令_linux_12

2.加上-P选项解压使用了-P选项压缩/root/后的root.tar.gz文件:

docker war包解压 docker中解压zip文件命令_docker war包解压_13

b.在使用tar压缩或者打包的时候,可以通过增加–exclude来达到排除指定的文件的目的

将/root/目录下的harry目录打包,但是不打包harry目录下的ha.txt文件,如下图:

docker war包解压 docker中解压zip文件命令_面试_14

压缩文件也是同理,想要排除指定的目录压缩或者打包也是同理

zip命令和unzip命令

#在使用zip跟unzip命令之前先查看系统有没有安装这两个命令的包,没有的话要自己安装
查看有没有安装zip跟unzip命令的命令:

rpm -q zip unzip

docker war包解压 docker中解压zip文件命令_linux_15

如果有安装了命令则会显示出命令的版本号

zip命令

基本用法:

zip [参数] [压缩包名] [压缩的目录或者文件的路径]

常用参数:

zip命令的常用参数
| -m | 将文件压缩后,删除原文件 |
| -o | 将压缩文件内的所有文件的最新变动时间设为压缩的时间 |
| -q | 安静模式,在压缩的时候不显示指令执行的过程 |
| -r | 递归压缩,将自定目录下的所有子文件以及文件一起处理 |
| -x | ”文件列表“,压缩时排除文件列表中的文件 |

实例:

a.压缩目录,将/root/目录下的harry目录压缩为名为harry.zip压缩包:

1.正常压缩,不加-q选项,显示压缩的过程:

docker war包解压 docker中解压zip文件命令_docker war包解压_16

2.加上-q选项,安静模式输出,不显示压缩的过程:

docker war包解压 docker中解压zip文件命令_面试_17

b.压缩多个文件,将/root/目录下的ceshi.txt文件和anaconda-ks.cfg文件和Golden.apk文件压缩为名为jihe.zip的压缩包:

因为压缩的全是文件,所以可以不用加上-r选项

docker war包解压 docker中解压zip文件命令_docker war包解压_18

c.压缩文件跟目录,将/root/下的ceshi.txt文件和anaconda-ks.cfg文件和harry目录压缩成名为dajihe.zip的压缩包:

docker war包解压 docker中解压zip文件命令_面试_19

d.将/root/目录下的harry目录压缩为harry1.zip压缩包,排除harry目录下的ha.txt文件:

docker war包解压 docker中解压zip文件命令_linux_20

unzip命令

基本用法:

unzip [参数] [压缩文件]  (-d [目录])  //如果不是用括号里面的内容,则解压文件在当前工作目录

常用参数:

unzip命令的常用参数
| -c | 将解压缩的结果显示到屏幕上(显示每一个目录下的每一个文件的内容),同时对字符做适当的转换,但是并没有解压压缩包 |
| -l | 显示压缩文件内所包含的文件 |
| -t | 检查压缩文件是否正确 |
| -v | 执行时显示压缩文件的详细信息 |
| -q | 安静模式,执行时不显示任何信息 |
| -d | 指定文件解压后存储的目录 |
| -x | 指定不要处理压缩文件中的那些文件 |

实例:

a.将harry.zip压缩包解压缩的结果显示出来:

docker war包解压 docker中解压zip文件命令_docker war包解压_21

具体会显示到每一个文件跟每一个文件的内容

b.显示jihe.zip压缩包里面锁包含的文件

docker war包解压 docker中解压zip文件命令_docker war包解压_22

c.检查dajihe.zip压缩文件是否正确:

docker war包解压 docker中解压zip文件命令_运维_23

全部OK表示全部文件都是正确的

d.不解压压缩文件dajihe.zip,查看压缩包里面的内容(查看显示的文件列表还包含压缩比率):

docker war包解压 docker中解压zip文件命令_运维_24

#使用-v显示的信息比使用-l显示的信息更加详细

e.将dajihe.zip压缩包解压到/opt/目录下:

docker war包解压 docker中解压zip文件命令_压缩文件_25

**补充:**使用r选项增加.tar归档文件的内容应该如何怎么操作?

我们先来了解一下tar命令-r选项的作用:

docker war包解压 docker中解压zip文件命令_docker war包解压_26

通过tar --help命令查看帮助

-r选项的作用:把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中

使用实例:

docker war包解压 docker中解压zip文件命令_运维_27