文件压缩
文件压缩:将多个文件或者是目录合并成一个特殊文件,方便传输或者是存储。
Linux下压缩包的常见类型
格式 | 压缩工具 |
---|---|
.zip | zip压缩工具 |
.gz | gzip压缩工具,只能压缩文件,会删除源文件(通常配合tar使用) |
.bz2 | bzip2压缩工具,只能压缩文件,会删除源文件(通常配合tar使用) |
.tar.gz | 先使用tar命令归档打包,然后使用gzip压缩 |
.tar.bz2 | 先使用tar命令归档打包,然后使用bzip压缩 |
Linux与windows的压缩包都支持zip格式。在windows上我们最常使用的是RAR和zip格式的压缩包,但是Linux不支持RAR格式的压缩文件。Linux下最常用的是Zip和tar.gz的压缩方式,LInux上的压缩格式放在windows上是可以正常打开的。所以在Linux和windows上互通常选择zip格式。
三种压缩方式,gzip、zip、tar
1.gzip
只能压缩单个文件,不支持压缩目录,可以用来注释配置文件(压缩之后相当于更改文件类型,使文件不生效)。
//安装gzip
[root@study~]# yum install gzip -y
//压缩文件
[root@study~]# gzip filename
//查看文件
[root@study~]# zcat file.gz
//解压文件
[root@study~]# gzip -d file.gz
2.zip
对文件和目录进行打包压缩,还可以设置压缩文件的名,指定解压目录。
zip命令进行压缩,unzip进行解压
//安装zip命令
[root@study~]# yum install zip unzip -y
//用which查看是否安装zip即unzip命令
[root@study~]# which zip
[root@study~]# which unzip
//压缩文件zip
[root@study~]# zip filename.zip filename
//压缩目录zip
[root@study~]# zip -r dir.zip dir/
//检查压缩包是否完整
[root@study~]# zip -T filename.zip
//查看压缩包内容
[root@study~]# unzip -l filename.zip
[root@study~]# unzip -t filename.zip
//解压压缩包(默认解压到当前目录)
[root@study~]# unzip filename.zip
//解压到指定目录
[root@study~]# unzip filename.zip -d /opt/
3.tar
tar是Linux下最常用的打包压缩方式,tar命令可以吧Linux的文件和目录进行打包,之后再利用压缩工具进行压缩。
tar语法:tar 参数 文件或目录
参数:
c:创建新的打包文件
x:对打包文件进行解包
t:列出打包文件的文件列表
v:输出命令的打包或者解包过程
f:指定文件名,多参数f在后面
z:使用gzip的方式压缩打包文件(.tar.gz)
j:使用使用bzip2压缩打包文件(.tar.bz2)
J:使用xz压缩打包的文件(.tar.xz)
C:指定解压目录位置
X:排除多个文件(写入需要排除的文件名称)
h:打包软连接(如果不加h,若文件中包含软链接文件,则不能打包软连接文件)
--exclude:排除文件或者目录
常使用的命令组合
czf 打包.tar.zip格式
cjf 打包.tar.bz格式
cJf 打包.tar.xz格式
zxf 解压.tar.gz格式
jxf 解压.tar.bz格式
xf 自动选择解压模式
tf 查看压缩包内容
// 用gzip方式打包并压缩(test,test2)
[root@study~]# tar czf text.tar.gz test/ test2/
//以bz2方式压缩
[root@study~]# yum install bzip2 -y
[root@study~]# tar cjf test.tar.bz2 dir.txt dir/
//打包链接文件,打包链接文件的真实文件
[root@study~]# tar czfh local.tar.gz etc/rc.local
//打包/tmp下的所有内容(两种方法)
[root@study~]# find tmp/ -type f | xargs tar czf tmp.tar.gz
[root@study~]# tar czf tmp2.tar.gz $(find /tmp/ -type f)
//排除文件
//排除单个文件(etc/services etc)
[root@study~]# tar czf etc.tar.gz --exclude=etc/services etc/
//排除多个文件(etc/sysconfig/network-scripts/ifcfg-lo,etc/sysconfig/network-scripts/ifcfg-eth0)
[root@study~]# tar czf oo2.tar.gz --exclude=etc/sysconfig/network-scripts/ifcfg-lo --exclude=etc/sysconfig/network-scripts/ifcfg-eth0 /etc
//将需要排除的文件写入文件中
[root@study~]# cat ~/pc.txt
etc/sysconfig/network-scripts/ifcfg-eth0
etc/services
etc/rc.local
//指定需要排除的文件列表, 最后进行打包压缩
[root@db01-172 ~]# tar czfX oo3.tar.gz pc.txt /etc/
//解压至当前目录
[root@study~]# tar xf test.tar.gz
//解压到指定文件夹
[root@study~]# tar xf /etc/local.tar.gz -C /tmp