1、压缩包的类型
①.什么是压缩包
单个文件或者多个组成一个特殊的文件,就是压缩包
②.为什么要使用压缩
减少了磁盘空间,加快了网络传输
Windows:zip 、rar (linux不支持)
Linux:
.zip 使用zip工具打包 unzip解压,需要指定压缩包名,不会删除源文件
.gz 使用gzip格式进行压缩,会删除源文件, gzip,默认不支持压缩目录
.bz2 使用bzip2格式进行压缩,会删除源文件,bzip2解压 unbzip2,默认不支持压缩目录
.tar.gz 先使用tar命令进行打包,使用gzip格式进行压缩
.tar.bz2 先使用tar命令进行打包,使用bzip2格式进行压缩
.tar.xz 先使用tar命令进行打包,使用xz压缩方式
2、Zip压缩
yum install -y zip unzip
zip 压缩包名 源文件
[root@lixian ~]# zcat services.zip #查看zip格式的压缩文件 [root@lixian ~]# unzip services.zip #解压,默认解压到当前目录 [root@lixian ~]# zip -r etc.zip /etc #打包目录 [root@lixian ~]# zip -rq etc.zip /etc #打包的时候不显示打包过程 [root@lixian ~]# unzip -q etc.zip #解压的时候不显示解压过程 [root@lixian ~]# unzip -l etc.zip #查看压缩包中的列表信息 [root@lixian ~]# unzip -q etc.zip -d /opt/ #解压到指定的目录
总结:
zip 打包压缩
-r #递归打包,打包目录
-q #打包的时候不显示打包过程
unzip 解压.zip格式压缩包
-q #解压的时候,不显示解压的过程
-l #显示压缩包的列表信息
-d #解压到指定的目录中
3、Gzip压缩
gzip 源文件
gzip #压缩文件,不能压缩目录
-d #解压
-r #压缩目录下的所有文件
-rd #解压目录下的所有压缩文件
zcat #查看gzip格式的压缩文件
4、tar命令
#打包压缩的命令
选项:
c 创建包
z 使用gzip格式压缩
j 使用bzip2格式压缩
J 使用xz格式压缩
f 指定压缩包的名称
v 显示打包的过程
常用的压缩形式及选项:
czf #打包tar.gz格式
cjf #打包tar.bz2格式
cJf #打包tar.xz格式
t #显示压缩包列表,自动识别压缩包格式
tf #查看压缩包内容
x #解压 ,自动识别压缩包格式
P #使用绝对路径打包
h #打包软连接的真实文件数据
-C #解压到指定的目录
X #指定排除列表文件
–exclude= #排除不需要打包的文件
–exclude-from= #指定排除的列表文件
[root@lixian ~]# tar czf service.tar.gz services [root@lixian ~]# ll total 792 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz [root@lixian ~]# tar cjf service.tar.bz2 services [root@lixian ~]# ll total 916 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 123925 Dec 24 19:36 service.tar.bz2 -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz [root@lixian ~]# tar cJf service.tar.xz services [root@lixian ~]# ll total 1016 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 123925 Dec 24 19:36 service.tar.bz2 -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz -rw-r--r--. 1 root root 100680 Dec 24 19:37 service.tar.xz
解决提示删跟操作:
[root@lixian ~]# tar czf etc.tar.gz /etc/
tar: Removing leading `/’ from member names
#删跟的操作,不是报错,防止解压的时候覆盖源文件文件
解决方法:
①、进入跟目录进行打包,使用相对路径打包
[root@lixian ~]# cd / [root@lixian /]# tar czf /root/etc-1.tar.gz etc #指定打包目录,前面不需要带跟 [root@lixian /]# ll /root/ total 19932 drwxr-xr-x. 80 root root 8192 Dec 23 16:59 etc -rw-r--r--. 1 root root 10196757 Dec 24 19:47 etc-1.tar.gz -rw-r--r--. 1 root root 10196757 Dec 24 19:43 etc.tar.gz
②、使用P选项进行压缩
[root@lixian ~]# tar czPf etc-2.tar.gz /etc #不会提示删跟操作 [root@lixian ~]# tar xf etc-2.tar.gz #解压的时候进行删根操作,主要是做一个保护机制 tar: Removing leading `/' from member names
解压到指定的目录中:
默认是解压到当前目录
-C 指定目录
[root@lixian ~]# tar xf etc.tar.gz -C /opt/ #解压到指定一个目录 [root@lixian ~]# ll /opt/ total 12 drwxr-xr-x. 80 root root 8192 Dec 23 16:59 etc
打包软连接文件:
h选项
[root@lixian ~]# tar czhf grub-1.tar.gz /etc/grub2.cfg tar: Removing leading `/' from member names [root@lixian ~]# ll total 29888 -rw-r--r--. 1 root root 10196757 Dec 24 19:48 etc-1.tar.gz -rw-r--r--. 1 root root 10196675 Dec 24 19:49 etc-2.tar.gz -rw-r--r--. 1 root root 10196757 Dec 24 19:43 etc.tar.gz -rw-r--r--. 1 root root 1466 Dec 24 19:56 grub-1.tar.gz -rw-r--r--. 1 root root 124 Dec 24 19:54 grub.tar.gz [root@lixian ~]# tar xf grub-1.tar.gz [root@lixian ~]# ll etc total 8 -rw-r--r--. 1 root root 4229 Nov 26 20:28 grub2.cfg
排除文件:
–exclude= 选项:
单个文件:
tar czf lixian.tar.gz –exclude=/etc/services /etc
多个文件:
tar czf lixian.tar.gz –exclude=/etc/{passwd,services,shadow} /etc
两个不同路径的文件
tar czf etc-4.tar.gz –exclude=/opt/services –exclude=/etc/lixian /etc
排除多个列表文件:
–exclude-from= 选项:
cat paichu.txt /etc/services /etc/passwd /etc/sysconfig/network-scripts /etc/hosts tar czf lixian.tar.gz --exclude-from=paichu.list /etc
X选项:
压缩包名要跟f选项对应 X要跟排除列表文件对应
[root@lixian ~]# tar czfX etc-6.tar.gz paichu.list /etc tar: Removing leading `/' from member names [root@lixian ~]# tar tf etc-6.tar.gz |grep -E 'services|passwd|network-scripts|hosts' etc/security/opasswd etc/passwd- etc/hosts.allow etc/hosts.deny etc/pam.d/passwd