文件打包与压缩
1.什么是文件压缩
将多个文件或目录合并成为一个特殊的文件
2.为什么要对文件进行压缩
当我们在传输大量的文件时,通常都会选择该文件进行压缩
首先:压缩后的文件会比压缩前的文件小
其次:多个文件传输很慢,但单个文件传输会很快,同时还能节省网络的消耗
3.windows的压缩包与linux的压缩包能否互通
在windows系统下,我们接触最多的压缩格式是rar或zip,但在linux上使用最多的压缩格式是zip和tar.gz,当然不用担心,linux上的压缩格式放在windows系统下都是可以正常打开的。
PS:linux不支持windows下的RAR格式的压缩文件。windows和linux互通通常选择zip
linux下压缩包有哪些常见的类型
1.gzip打包与压缩
gzip打包与压缩,仅对文件有效
yum install gzip -y #需要安装gzip工具
[root@oldboy ~]# gzip filename
[root@oldboy ~]# zcat filename.gz
[root@oldboy ~]# gzip -d filename.gz
使用场景:当需要某个文件快速关闭和快速启用
2.zip打包与压缩
使用zip命令可以对文件进行压缩打包,解压则需要使用unzip命令
-l : 查看包内容
-T: 查看zip压缩包 是否完整
-r: 递归打包目录
-t: 检测文件是否都ok
默认情况下没有zip 和unzip工具,需要进行安装
[root@oldboy ~]# yum install zip unzip -y
压缩文件为zip包
[root@oldboy ~]# zip filename.zip filename
[root@oldboy ~]# unzip -l filename.zip
压缩目录为zip包
[root@oldboy ~]# zip -r dir.zip dir/
[root@oldboy ~]# zip -T filename.zip
不解压查看压缩包的内容
[root@oldboy ~]# unzip -l filename.zip
[root@oldboy ~]# unzip -t filename.zip
解压到当期目录
[root@oldboy ~]# unzip filename.zip
解压zip包内容至/opt目录
[root@oldboy ~]# unzip filename.zip -d /opt/ #注意-d的使用位置
3.tar压缩打包
tar是linux下最常用的压缩与解压缩,支持文件和目录的压缩归档
语法
c:创建新的归档文件
x:对归档文件解包
t: 列出归档文件里的文件列表
f: 指定包文件名,多参数f写最后
z: 使用gzip压缩归档后的文件(.tar.gz)
j : 使用bzip2压缩归档后的文件(.tar.bz2)
J: 使用xz压缩归档后的文件 (.tar.xz)
C:指定解压目录位置
X: 排除多个文件(写入需要排除的文件名称)
h: 打包软链接
--exclude 在打包的时候写入需要排除文件或目录
常用打包与压缩组合
cjf:打包tar.bz格式
cJf:打包tar.xz格式 (使用较少)
zxf:解压tar.gz格式
jxf: 解压tar.bz格式
czf:打包tar.gz格式
tf: 查看压缩包内容
xf: 自动选择解压模式
打包
[root@oldboy ~]# tar czf test.tar.gz test/ test2/
[root@oldboy ~]# tar cjf test.tar.bz2 dir/
[root@oldboy ~]# tar cJf test.tar.xz ops/ ops1/
查看包内容
[root@oldboy ~]# tar tf test.tar.gz
[root@oldboy ~]# tar tf test.tar.bz2
[root@oldboy ~]# tar tf test.tar.xz
解压包
[root@oldboy ~]# tar xf test.tar.gz
[root@oldboy ~]# tar xf test.tar.bz2
[root@oldboy ~]# tar xf test.tar.xz
[root@oldboy ~]# tar xf test.tar.gz -C /tmp/ #解压到指定目录
打包/tmp下的所有文件
[root@oldboy ~]# find /tmp/ -type f | xargs tar czf tmp.tar.gz
[root@oldboy ~]# tar czf tmp.tar.gz $(find /tmp/ -type f)
打包链接文件,打包链接文件的真实文件
[root@oldboy ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Jul 24 15:37 /etc/rc.local -> rc.d/rc.local
[root@oldboy ~]# tar czfh local.tar.gz /etc/rc.local
排除操作
[root@oldboy ~]# tar czf etc.tar.gz /etc/ --exclude=etc/services
[root@oldboy ~]# tar czf etc.tar.gz /etc/ --exclude=etc/passwd --exclude=etc/shadow
将需要排除的文件写入文件中
[root@oldboy ~]# cat >>pc.txt<<EOF
> etc/gshadow
> etc/passwd
> etc/gshadow-
> etc/passwd-
> etc/shadow
> etc/shadow-
> EOF
[root@oldboy opt]# tar czxf pc.txt etc.tar.gz /etc/
打包目录,命令以ip地址+当前时间方式的压缩包
[root@oldboy ~]# tar zcf $(ifconfig ens32|awk 'NR==2{print $2}')_$(date +%F)_etc.tar.gz /etc