文件打包与压缩
什么是文件压缩?
将多个文件或目录合并成为一个特殊的文件
为什么要对文件进行压缩?
- 减小文件的体积
- 加快资源的传输
- 节省网络的带宽
Windows的压缩包与Linux的压缩包能否互通?
- Windows常见的压缩包后缀名:zip、rar(它支持很多类型的压缩格式)
- Linux常见的压缩包后缀名:zip、gzip、tar.gz、tar.bz、tar.bz2
Windows与Linux互通建议使用:zip
Linux下压缩包有哪些常见的类型?
格式 | 压缩工具 |
---|---|
.zip | zip压缩工具(必须要会使用) |
.gz | gzip压缩工具,只能压缩文件,会删除源文件(通常配合tar使用) |
.bz2 | bzip2压缩工具,只能压缩文件,会删除源文件(通常配合tar使用) |
.tar.gz | 先使用tar命令归档打包,然后使用gzip压缩(必须会的) |
.tar.bz2 | 先使用tar命令归档打包,然后使用bzip压缩(顺带就会) |
gzip打包与压缩
gzip:打包与压缩 ,仅对文件有效,只能给一个文件打包.
gzip filename:打包
gzip -d filename.gz:解包
zcat filename.gz:查看压缩包内文件的内容
1.先要安装gzip这个工具包
[root@oldboy ~]# yum install gzip -y
2.将1.txt进行打包
[root@oldboy ~]# gzip 1.txt
3.查看1.txt压缩包里的内容
[root@oldboy ~]# zcat 1.txt.gz
4.解压
[root@oldboy ~]# gzip -d 1.txt.gz
使用场景:当需要某个文件快速关闭和快速启用
[root@xuliangwei ~]# gzip CentOS-Vault.repo --> CentOS-Vault.repo.gz(系统不会运行压缩包)
[root@xuliangwei ~]# zcat CentOS-Vault.repo.gz --> 查看不想解压的压缩包文件内容
zip打包与压缩
zip filename.zip filename:打包
zip -r dir.zip dir/:递归,将目录里的所有内容打包
zip -T filename.zip:查看压缩包是否完整
unzip filename.zip:解压
unzip -l filename.zip:查看压缩包里面的内容
unzip filename.zip -d /dir:解压到指定位置
unzip -t filename.zip:检测文件是否完整
(1)zip工具使用
默认情况下没有zip和unzip工具,需要进行安装
[root@oldboy ~]# yum install zip unzip -y
1.压缩文件为zip包
[root@oldboy ~]# zip 1.zip 1.txt
updating: 1.txt (deflated 54%)
[root@oldboy ~]# unzip -l 1.zip 不解压的情况下查看包内容
2.压缩目录为zip包
[root@oldboy ~]# zip -r dir.zip dir/
3.查看zip压缩包是否是完整的
[root@oldboy ~]# zip -T 1.zip
test of 1.zip OK
4.不解压压缩查看压缩包中的内容
[root@oldboy ~]# unzip -l 1.zip
检测文件是否都ok
[root@oldboy ~]# unzip -t 1.zip
Archive: 1.zip
testing: 1.txt OK
No errors detected in compressed data of 1.zip.
5.解压zip文件包, 默认解压至当前目录
[root@oldboy ~]# unzip 1.zip
Archive: 1.zip
inflating: 1.txt
6.解压zip内容至/opt目录
[root@oldboy ~]# unzip 1.zip -d /tmp/
tar打包与压缩
tar是Linux下最常用的压缩与解压缩,支持文件和目录的压缩归档
#语法:tar [-zjxcvfpP] filename
c 创建新的归档文件
x 对归档文件解包
t 列出归档文件里的文件列表
v 输出命令的归档或解包的过程
f 指定包文件名,多参数f写最后
z 使用gzip压缩归档后的文件(.tar.gz)
j 使用bzip2压缩归档后的文件(.tar.bz2)
J 使用xz压缩归档后的文件(tar.xz)
-C(大) 指定解压目录位置
X 排除多个文件(写入需要排除的文件名称)
h 打包软链接
--hard-dereference 打包硬链接
--exclude 在打包的时候写入需要排除文件或目录
常用打包与压缩组合
czf 打包tar.gz格式(常用)
xf 自动选择解压模式(常用)
tf 查看压缩包内容(常用)
cjf 打包tar.bz格式
cJf 打包tar.xz格式
jxf 解压tar.bz格式
zxf 解压tar.gz格式
(1)将文件或目录进行打包压缩 查看压缩包内容
1.以gzip归档方式打包并压缩
[root@oldboy ~]# tar czf test.tar.gz test/ test2/
以bz2方式压缩
[root@oldboy ~]# cjf test.tar.bz2 dir.txt dir/
2.查看包内容
[root@oldboy ~]# tar tf test.tar.gz
3.解压
[root@oldboy ~]# tar xf test.tar.xz
[root@oldboy ~]# tar xf test.tar.gz xf自动选择解压模式,适用所有.tar开头的压缩包
[root@oldboy ~]# tar xf root.tar.gz -C /tmp/ -C解压至指定目录
4.打包/tmp下所有文件
[root@oldboy ~]# find tmp/ -type f | xargs tar czf tmp.tar.gz
第二种:
[root@oldboy ~]# tar czf tmp.tar.gz $(find /tmp/ -type f)
(2)打包链接文件,打包链接文件的真实文件
[root@oldboy ~]# cd /
[root@oldboy /]# tar czfh local.tar.gz etc/rc.local
(3)排除文件里的部分内容,并压缩打包
[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
(4)将需要排除的文件写入文件中
[root@oldboy ~]# vim pc.txt
etc/gshadow
etc/gshadowetc/passwd
etc/passwdetc/shadowetc/shadow
etc/security/opasswd
etc/pam.d/passwd
[root@oldboy ~]# tar czXf pc.txt etc.tar.gz /etc/
tar命令练习
#1.环境准备
[root@xuliangwei ~]# yum install mariadb-server
[root@xuliangwei ~]# systemctl start mariadb
[root@xuliangwei ~]# mkdir /backup
#案例1.mysql备份及恢复
[root@xuliangwei ~]# tar cJf /backup/mysql.tar.xz /var/lib/mysql
[root@xuliangwei ~]# tar xf /backup/mysql.tar.xz -C /
#案例2 mysql备份及恢复
[root@xuliangwei ~]# cd /var/lib/mysql
[root@xuliangwei mysql]# tar cJf /backup/mysql.tar.xz *
[root@xuliangwei mysql]# tar tf /backup/mysql.tar.xz
[root@xuliangwei mysql]# tar xf /backup/mysql.tar.xz -C /var/lib/mysql