day15----文件的压缩与解压缩
1.什么是压缩
- 将多个文件或目录合并成一个特殊的文件
2.为什么要对文件进行压缩
- 减小文件体积
- 加快资源的传输
- 节省网络的带宽
3.Windows的压缩包与Linux的压缩包能否互通
- Windows:rar zip 支持很多类型的压缩
- linux:zip tar.gz
- Linux与Windows互通建议使用zip
4.Linux下压缩包有哪些常见的类型
格式 | 压缩工具 |
---|---|
.zip | zip压缩工具 |
.gz | gzip压缩工具,会删除原文件(通常配合tar使用) |
.bz2 | bzip压缩工具,只能压缩文件,会删除原文件夹(通常配合tar使用) |
.tar.gz | 先使用tar命令归档打包,然后使用zip压缩 |
.tar.gz2 | 先使用tar命令归档打包,然后使用bzip压缩 |
5.Linux gzip zip tar 工具的使用
1)gzip 打包与压缩仅对文件有效
- gzip filename 压缩
- gzip -d filename.gz 解包
- zcat file 查看压缩包内文件的内容
示例:
[root@oldboy--day01 ~]#yum install gzip -y #安装gzip工具
[root@oldboy--day01 ~]# gzip 1.txt #在当前目录下压缩文件1.txt
[root@oldboy--day01 ~]# zcat 1.txt.gz #查看压缩文件1.txtx.gz
[root@oldboy--day01 ~]# gzip -d 1.txt.gz #解压gzip的压缩包
使用场景:当需要让某个文件快速关闭和快速启用
2)Linux zip压缩工具使用
- 默认情况下Linux没有zip和unzip工具,需要自行安装
[root@oldboy--day01 ~]# yum install zip unzip -y #安装zip和unzip工具
- 压缩文件为zip压缩包
[root@oldboy--day01 ~]# zip 2.txt.zip 2.txt #打包方式为:zip 打包后的文件名 需要打包的文件
[root@oldboy--day01 ~]# unzip -l 2.txt.zip #查看打包后的文件内容
- 压缩目录为zip压缩包
[root@oldboy--day01 ~]# zip -r dir.zip dir/ #打包目录为压缩文件包压缩包名称为dir.zip
- 查看zip压缩包是否完整
[root@oldboy--day01 ~]# zip -T filename.zip #查看压缩包文件是否打包完整
- 不解压压缩查看压缩包中的内容
[root@oldboy--day01 ~]# unzip -l 2.txt.zip #查看压缩后的文件知是完整
[root@oldboy--day01 ~]# unzip -t 2.txt.zip #检测文件打包后是否打包成功
- 解压zip文件包,默认解压至当前目录
[root@oldboy--day01 ~]# unzip 2.txt.zip #解压文件,默认解压至当前目录
- 解压zip内容至/opt目录
[root@oldboy--day01 ~]# unzip 2.txt.zip -d /opt/ #解压2.txt.zip至/opt/目录下
- 打包file 与dir目录至/tmp/test.zip
[root@oldboy--day01 ~]# zip -r /tmp/test.zip file dir/ #打包file文件与目录dir
- 解压缩上一步的压缩包
[root@oldboy--day01 ~]# unzip /tmp/test.zip #解压文件至当前文件夹
[root@oldboy--day01 ~]# unzip /tmp/test.zip -d /opt/ #解压文件到指定文件夹
3)Linux tar工具的使用
tar是Linux下最常用的压缩与解压工具,支持文件和目录归档
语法:tar [-zjxcvfpP] filename
c #创建新的归档文件
x #对归档文件进行解压
f #指定包文件名,多参数时f写最后
t #列出归档文件里的文件列表
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--day01 ~]# tar czf test.tar.gz test/ test2 #以gzip方式压缩test与test2这两个目录
[root@oldboy--day01 ~]# tar cjf test.bz2 dir.txt dir/ #以bz2方式压缩dir.txt 文件与dir目录
- 查看包内文件与目录
[root@oldboy--day01 ~]# tar tf test.tar.gz #不解压查看压缩包内容
[root@oldboy--day01 ~]# tar tf test.tar.bz2 #不解压查看压缩包内容
[root@oldboy--day01 ~]# tar tf test.tar.xz #不解压查看压缩包内容
- 解压
[root@oldboy--day01 ~]# tar xf test.tar.gz #解压文件至当前目录
[root@oldboy--day01 ~]# tar xf test.tar.bz2 #解压文件至当前目录
[root@oldboy--day01 ~]# tar xf test.tar.xz #解压文件至当前目录
[root@oldboy--day01 ~]# tar xf test.tar.gz -C /tmp/ #解压至指定目录
2.打包/tmp/下所有文件
方式一:
[root@oldboy--day01 ~]# find tmp/ -type f |xargs tar czf tmp.tar.gz #打包/目录下的所有文件打包格式为tar.gz
方式二:
[root@oldboy--day01 ~]# tar czf tmp.tar.gz $(find /tmp/ -type f) #打包/目录下的所有文件打包格式为tar.gz
3.打包链接文件,打包链接文件的真实文件
[root@oldboy--day01 ~]# tar czf local.tar.gz weixin #打包压缩微信软链接,压缩包文件名为local.tar.gz
4.排出操作
- 排除单个:
[root@oldboy--day01 ~]# tar czf etc.tar.gz /etc/ --exclude=etc/services #排除/etc/services文件打包压缩其他文件
- 排除多个:
[root@oldboy--day01 ~]# tar czf etc.tar.gz /etc/ --exclude=etc/passwd --exclude=etc/shadow #排除/etc/passwd文件和shadow文件打包压缩其他文件
5.将需要排除的文件写入一个文件中
[root@oldboy--day01 ~]# cat shanchu.txt
/etc/passwd
/etc/passwd-
/etc/security/opasswd
/etc/pam.d/passwd
[root@oldboy--day01 ~]# tar czXf shanchu.txt etc.tar.gz /etc/ #压缩除文件中以外的其他文件
例题:
0.环境准备
[root@oldboy--day01 ~]# yum install mariadb-server
[root@oldboy--day01 ~]# systemctl start mariadb
[root@oldboy--day01 ~]# mkdir /backup
方法1.mysql备份及恢复
- 打包/var/lid/mysql目录中的文件至/backup
[root@oldboy--day01 ~]# mkdir /var/lid/mysql -p
[root@oldboy--day01 ~]# tar cJf /backup/myspl.tar.xz /var/lid/mysql #将/var/lid/mysql目录下的文件打包成tar.xz格式
tar: Removing leading `/' from member names
- 解压文件至/目录
[root@oldboy--day01 ~]# tar xf /backup/myspl.tar.xz -C / #将压缩包文件解压至根目录下
方法2.mysql备份及恢复
[[root@oldboy--day01 ~]# cd /var/lib/mysql
[root@oldboy--day01 ~]# tar cJf /backup/mysql.tar.xz * #压缩当前目录下的所有内容
[root@oldboy--day01 ~]# tar tf /backup/mysql.tar.xz #不解压查看压缩包内的内容
[root@oldboy--day01 ~]# tar xf /backup/mysql.tar.xz - C /var/lib/mysql #将文件解压至原位置