Linux压缩打包命令——tar、zip、unzip

技术博客 / 4549人浏览 / 0人评论

打包跟压缩的区别:
打包是指将多个文件或者目录放在一起,形成一个总的包,这样便于保存和传输,但是大小是没有变化的,压缩是指将一个或者多个大文件或者目录通过压缩算法使文件的体积变小以达到压缩的目的,可以节省存储空间,在压缩的时候通常是先打包再压缩;

tar命令
tar命令参数前面加”-"与不加“-”的区别:

tar命令参数前面加不加“-”执行命令的结果是没有区别的,区别只要是在于linux风格方面,加“-”属于System V风格,不加“-”属于BSD风格,所以在使用tar命令的时候它的参数加不加“-”结果是一样的,看个人的使用方式;

常用命令:
image.png

一、打包
实例:
a.将/root/下的ceshi.txt文件和anaconda-ks.cfg文件和time.sh文件打包为一个文件,名称为“jihe.tar”:
image.png
b.查看jihe.tar文件的内容:
image.png
c.提取jihe.tar文件的内容到/opt目录下:
image.png

如果不用“-C”指定目录则会提取内容到当前目录

二、压缩
linux主要有三种压缩方式:
1.gzip:是公认的压缩这速度最快,压缩大文件的时候与其他的压缩方式相比更加明显,历史最久,应用最广泛的压缩方式
2.bzip:压缩形成的文件小,但是可用性不如gzip
3.xz:是最新的压缩方式,可以自动提供最佳的压缩率
image.png
实例:用不同的压缩方式压缩/root/目录下的Golden.apk文件
先查看Golden.apk文件的大小:
image.png
可以看到Golden.apk文件的大小为187M

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

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

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

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

在压缩的过程中,我们可以发现:
压缩速度:gz > bz2 > xz
压缩率:xz > bz2 > gz
image.png

三、解压
先删除/root/目录下的Golden.apk文件:
image.png

tar命令式一个很聪明的命令,我们在解压的时候不需要指明自己压缩的方式它会自己选择跟压缩方式对应的方式去解压,这话说得有点拗口,例:
a.将Golden.apk.tar.gz解压到当前目录:
image.png

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

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

将/root/目录以gzip的方式压缩为root.tar.gz压缩文件:
1.没有加-P选项:
image.png
2.加上-P选项:
image.png
解压的时候同理,如果在压缩文件的时候使用了-P选项,那么在解压的时候也要加上-P选项,不然也会出现”tar: 从成员名中删除开头的“/”“,如下图:
1.不加-P选项解压使用了-P选项压缩/root/后的root.tar.gz文件:
image.png
2.加上-P选项解压使用了-P选项压缩/root/后的root.tar.gz文件:
image.png

b.在使用tar压缩或者打包的时候,可以通过增加--exclude来达到排除指定的文件的目的
将/root/目录下的harry目录打包,但是不打包harry目录下的ha.txt文件,如下图:
image.png

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

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

查看有没有安装zip跟unzip命令的命令:

rpm -q zip unzip
image.png
如果有安装了命令则会显示出命令的版本号
zip命令
基本用法:
zip [参数] [压缩包名] [压缩的目录或者文件的路径]
image.png

实例:
a.压缩目录,将/root/目录下的harry目录压缩为名为harry.zip压缩包:
1.正常压缩,不加-q选项,显示压缩的过程:
image.png
2.加上-q选项,安静模式输出,不显示压缩的过程:
image.png
b.压缩多个文件,将/root/目录下的ceshi.txt文件和anaconda-ks.cfg文件和Golden.apk文件压缩为名为jihe.zip的压缩包:
因为压缩的全是文件,所以可以不用加上-r选项
image.png
c.压缩文件跟目录,将/root/下的ceshi.txt文件和anaconda-ks.cfg文件和harry目录压缩成名为dajihe.zip的压缩包:
image.png
d.将/root/目录下的harry目录压缩为harry1.zip压缩包,排除harry目录下的ha.txt文件:
image.png
unzip命令
基本用法:
unzip [参数] [压缩文件] (-d [目录]) //如果不是用括号里面的内容,则解压文件在当前工作目录
image.png
实例:
a.将harry.zip压缩包解压缩的结果显示出来:
image.png
具体会显示到每一个文件跟每一个文件的内容
b.显示jihe.zip压缩包里面锁包含的文件
image.png
c.检查dajihe.zip压缩文件是否正确:
image.png
全部OK表示全部文件都是正确的
d.不解压压缩文件dajihe.zip,查看压缩包里面的内容(查看显示的文件列表还包含压缩比率):
image.png

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

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

补充:使用r选项增加.tar归档文件的内容应该如何怎么操作?
我们先来了解一下tar命令-r选项的作用:
image.png
通过tar --help命令查看帮助
-r选项的作用:把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中

使用实例:
image.png
看上图,可以看到我ops用户家目录下标记了一个文件,一个目录,我现在先将目录归档,然后再将文件追加到档案里面
1.归档操作
image.png
生成.tar文件,目录归档完毕!
2.将calculating_time.sh追加进入.tar文件中
image.png
3.验证
a.查看.tar文件的归档信息
image.png
image.png
可以看到calculating_time.sh文件已经被追加到档案的末尾了
b.提取Check_Configuration_20201118_PM.tar 到/mnt目录下
image.png
使用-r选项追加文件至.tar文件成功

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我