• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

linux系统打包与压缩【显哥出品,必为精品】

运维基础 lixian 5年前 (2019-12-25) 20890次浏览 0个评论 扫描二维码
文章目录[隐藏]

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

本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:linux系统打包与压缩【显哥出品,必为精品】
喜欢 (30)

您必须 登录 才能发表评论!