阿Q的Linux运维学习之路(day17)-Linux压缩打包

文件打包与压缩

打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

打包压缩指的就是将多个文件或目录合并成为一个特殊的文件。就好比如我们搬家的时候,把所有的东西都打包到了一起,然后通过箱子装起来,节省了占用空间,也节省了来回搬东西的时间。

Linux下常见压缩包类型

格式 压缩工具/th>
.zip zip压缩工具
.gz gzip压缩工具,只能压缩文件,会删除原文件(通常配合tar使用)
.bz2 bzip2压缩工具,只能压缩文件,会删除原文件(通常配合tar使用)
.tar.gz 先使用tar命令归档打包,然后使用gzip压缩
.tar.bz2 先使用tar命令归档打包,然后使用bzip压

gzip打包与压缩

gzip只能压缩文件,并且压缩完之后源文件就消失了。解压使用-d选项。
语法格式:
gzip 选项 参数
示例:

#压缩当前目录下名为file1的文件
[root@localhost ~]# gzip file1

#使用zcat查看压缩包内容
[root@localhost ~]# zcat file1.gz 

#加-d选项解压压缩包
[root@localhost ~]# gzip -d file1.gz

当需要让某个文件不生效时,我们就可以使用gzip把文件打成压缩包。

zip打包与压缩

使用zip命令可以对文件进行压缩打包,解压则需要使用unzip命令

使用之前我们可以which zip先查看是否安装zip命令工具,如果没有我们需要先安装才可以使用。
安装zip和unzip工具命令:

yum install zip unzip -y

语法格式:
zip 选项 参数
示例:

#压缩文件filename为zip包
[root@localhost ~]# zip  filename.zip  filename

#压缩目录为zip包,-r递归
[root@localhost ~]# zip -r  dir.zip dir/

#查看zip压缩包是否完整
[root@localhost ~]# zip -T  filename.zip
test of filename.zip OK

#-l选项不解压压缩包查看包内的内容
[root@localhost ~]# unzip -l  filename.zip
[root@localhost ~]# unzip -t  filename.zip

#解压.zip压缩包,默认解压到当前目录
[root@localhost ~]# unzip  filename.zip

#解压.zip压缩包至当前目录下的data/目录,-d选项指定目录解压
[root@localhost ~]# unzip  filename.zip -d ./data/

tar打包与压缩

tar是Linux下最常用的压缩与解压缩了,支持文件和目录的压缩归档。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。

语法格式:tar 选项 参数
常用选项:

选项 作用/th>
c 创建新的归档文件
x 对归档文件解包
t 列出归档文件里的文件列表
v 输出命令的归档或解包的过程
f 指定包文件名,多参数f写最后
z 使用gzip压缩归档后的文件(.tar.gz)
j 使用bzip2压缩归档后的文件(.tar.bz2)
J 使用xz压缩归档后的文件(tar.xz)
C 指定解压目录位置
X 排除多个文件(写入需要排除的文件名称)
h 打包软链接
--exclude 在打包的时候写入需要排除文件或目录

这些个选项还可以都结合在一起使用,我们经常会用到的一些有:

czf     	打包tar.gz格式
cjf    		打包tar.bz2格式
cJf   	  	打包tar.xz格式
zxf   	  	解压tar.gz格式
jxf    	 	解压tar.bz格式
xf    	  	自动选择解压模式 
tf     	 	查看压缩包内容

示例:

  1. 将文件或目录进行打包并压缩

    #以.gzip方式打包并压缩
    [root@localhost ~]# tar czf  test.tar.gz  test/ test2/
    #以bz2方式压缩
    [root@localhost ~]# tar cjf  test.tar.bz2  test/ test2/
    #打包链接文件,打包链接文件的真实文件
    [root@localhost ~]# tar czfh local.tar.gz /etc/rc.local 
    #打包/tmp目录下所有文件
    [root@localhost ~]# find /tmp/ -type f | xargs tar czf tmp.tar.gz
    

我们经常会看到执行压缩命令后会出现一行tar: Removing leading `/’ from member names
这个的意思是 从成员名中删除开头的“/”,就是tar打包压缩会文件会自动帮助去除 / 目录,避免解压时覆盖原有系统文件

  1. 排除文件, 并打包压缩

    #打包压缩etc/目录,但是排除services文件
    [root@localhost ~]# tar czf etc.tar.gz --exclude=etc/services etc/
    #排除多个文件,使用两次--exclude(这样需要排除的文件过多的话很麻烦)
    [root@localhost ~]# tar czf oo2.tar.gz --exclude=etc/sysconfig/network-scripts/ifcfg-lo
    --exclude=etc/sysconfig/network-scripts/ifcfg-eth0 /etc
    #将需要排除的文件写入文件中,指定需要排除的文件列表,最后进行压缩打包
    [root@localhost ~]#cat ~/pc.txt
    etc/sysconfig/network-scripts/ifcfg-eth0
    etc/services
    etc/rc.local
    [root@localhost ~]#tar czfX oo3.tar.gz  pc.txt  /etc/
    
  2. 查看压缩文件内容

    [root@localhost ~]# tar tf local.tar.gz
    etc/rc.local
    
  3. 解压缩文件

    #解压至当前文件
    [root@localhost ~]# tar xf  test.tar.gz
    #-C指定解压目录
    [root@localhost ~]# tar xf /etc/local.tar.gz  -C /tmp
    
发布了38 篇原创文章 · 获赞 0 · 访问量 584

猜你喜欢

转载自blog.csdn.net/qq_39095114/article/details/104983710