1.什么是文件压缩?
- 将多个文件或目录合并成为一个特殊的文件。
2.为什么要对文件进行压缩?
- 减小文件的体积
- 加快资源的传输
- 节省网络的带宽
3.Windows的压缩包与Linux的压缩包能否互通?
- windows: rar zip 其实支持很多类型的压缩
- linux: zip tar.gz ....
- windows与linux互通 建议使用: zip
4.Linux下压缩包有哪些常见的类型
格式 | 压缩工具 |
---|---|
.zip | zip压缩工具 |
.gz | gzip压缩工具,只能压缩文件,会删除源文件(通常配合tar使用) |
.bz2 | bzip2压缩工具,智能压缩文件,会删除源文件(通常配合tar使用) |
.tar.gz | 先使用tar命令归档打包,然后使用gzip压缩 |
.tar.bz2 | 先试用tar命令归档打包,然后使用bizp压缩 |
5.linux gzip 工具使用
*** gzip打包与压缩 ,仅对文件有效.***
gzip filename
#打包
gzip -d filename.gz
#解包
zcat filename.gz
#查看包内文件的内容
- 使用前先查看是否安装了gzip,没有用
yum install gzip -y
进行安装。
root@haoyu1[14:59:55]~# yum install gzip -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Package gzip-1.5-10.el7.x86_64 already installed and latest version
Nothing to do
- 对文件进行压缩
gzip filename
root@haoyu1[15:03:48]~# echo "hyman linux" > hyman.txt
root@haoyu1[15:03:51]~# gzip hyman.txt
root@haoyu1[15:04:10]~# ll
total 4
-rw-r--r--. 1 root root 42 Aug 13 15:03 hyman.txt.gz
- 查看gz压缩后的文件
zcat filename
root@haoyu1[15:04:12]~# zcat hyman.txt.gz
hyman linux
- 解压gzip的压缩包
gzip -d filename
root@haoyu1[15:05:26]~# gzip -d hyman.txt.gz
root@haoyu1[15:07:00]~# ll
total 4
-rw-r--r--. 1 root root 12 Aug 13 15:03 hyman.txt
- 使用场景:当需要让某个文件快速关闭和快速启用.
#/etc/yum.repos.d/目录下的repo文件,当我们不用的时候可以一条命令将它们关闭.
root@haoyu1[15:07:02]~# cd /etc/yum.repos.d/
root@haoyu1[15:15:37]/etc/yum.repos.d# ll
total 36
-rw-r--r--. 1 root root 2523 Jun 16 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 664 Jul 30 09:41 epel.repo
root@haoyu1[15:15:39]/etc/yum.repos.d# gzip *
root@haoyu1[15:16:25]/etc/yum.repos.d# ll
total 32
-rw-r--r--. 1 root root 601 Jun 16 2018 CentOS-Base.repo.gz
-rw-r--r--. 1 root root 735 Nov 23 2018 CentOS-CR.repo.gz
-rw-r--r--. 1 root root 254 Jul 30 09:41 epel.repo.gz
#当关闭的情况下也可以使用zcat命令查看文件的内容
root@haoyu1[15:17:52]/etc/yum.repos.d# zcat CentOS-Base.repo.gz
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#当我们需要开启的时候也可以使用gzip -d一条命令开启这些文件
root@haoyu1[15:16:27]/etc/yum.repos.d# gzip -d *
root@haoyu1[15:16:37]/etc/yum.repos.d# ll
total 36
-rw-r--r--. 1 root root 2523 Jun 16 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 664 Jul 30 09:41 epel.repo
6.linux zip 工具使用
- 默认情况下没有zip和unzip工具,需要进行安装
yum install zip unzip -y
root@haoyu1[16:10:09]~# yum install zip unzip -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Package zip-3.0-11.el7.x86_64 already installed and latest version
Package unzip-6.0-19.el7.x86_64 already installed and latest version
Nothing to do
- 压缩文件为zip包
zip -r filename
root@haoyu1[16:11:20]~# mkdir hhaoyu
root@haoyu1[16:11:54]~# zip -r hhaoyu.zip hhaoyu/
adding: hhaoyu/ (stored 0%)
root@haoyu1[16:12:14]~# ll
total 8
drwxr-xr-x. 2 root root 6 Aug 13 16:11 hhaoyu
-rw-r--r--. 1 root root 164 Aug 13 16:12 hhaoyu.zip
-rw-r--r--. 1 root root 12 Aug 13 15:03 hyman.txt
- 查看zip压缩包是否是完整的
zip -T filename.zip
root@haoyu1[16:12:17]~# zip -T hhaoyu.zip
test of hhaoyu.zip OK
- 不解压压缩查看压缩包中的内容
unzip -l filename.zip
root@haoyu1[16:15:14]~# unzip -l hhaoyu.zip
Archive: hhaoyu.zip
Length Date Time Name
--------- ---------- ----- ----
0 08-13-2019 16:15 hhaoyu/
--------- -------
0 1 file
- 检测文件是 否都ok
unzip -t filename.zip
root@haoyu1[16:15:26]~# unzip -t hhaoyu.zip
Archive: hhaoyu.zip
testing: hhaoyu/ OK
No errors detected in compressed data of hhaoyu.zip.
- 解压zip内容至/opt目录
unzip filename.zip -d /opt/
root@haoyu1[16:15:46]~# unzip hhaoyu.zip -d /opt/
Archive: hhaoyu.zip
creating: /opt/hhaoyu/
- 常用的zip命令
#打包
zip -r /tmp/test.zip file dir/
#解包
unzip tt.zip unzip tt.zip -d /opt
7.linux tar 工具使用
tar是linux下最常用的压缩与解压缩, 支持文件和目录的压缩归档
- 语法:tar [-zjxcvfpP] filename
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 | 自动选择解压模式(常用) |
-
将文件或目录进行打包压缩
-
打包
- 以gzip方式压缩
root@haoyu1[16:34:17]~# tar czf hhaoyu.tar.gz hhaoyu/ hyman.txt
- 以bz2方式压缩
root@haoyu1[16:34:57]~# tar cjf hhaoyu.tar.bz2 hhaoyu/ hyman.txt
- 以gzip方式压缩
-
查看包内容
#.gz root@haoyu1[16:36:04]~# tar tf hhaoyu.tar.gz hhaoyu/ hhaoyu/123/ hhaoyu/456/ hyman.txt #.bz2 root@haoyu1[16:36:04]~# tar tf hhaoyu.tar.bz2 #.xz root@haoyu1[16:36:04]~# tar tf hhaoyu.tar.xz
-
解压
#.gz root@haoyu1[16:37:14]~# tar xf hhaoyu.tar.gz #.bz2 root@haoyu1[16:37:14]~# tar xf hhaoyu.tar.bz2 #.xz root@haoyu1[16:37:14]~# tar xf hhaoyu.tar.xz #解压至指定目录 root@haoyu1[16:37:14]~# tar xf hhaoyu.tar.gz -C /tmp
-
打包/tmp下所有文件
root@haoyu1[16:43:32]~# find /tmp/ -type f | xargs tar czf tmp.tar.gz tar: Removing leading `/' from member names root@haoyu1[16:43:49]~# ll total 16 -rw-r--r--. 1 root root 126 Aug 13 16:43 tmp.tar.gz #另一种方法 tar czf tmp.tar.gz $(find /tmp/ -type f)
-
打包链接文件,打包链接文件的真实文件
root@haoyu1[16:46:07]~# tar czfh local.tar.gz etc/rc.local
-
排除操作
#排除单个 root@haoyu1[17:05:32]~# tar czf etc.tar.gz /etc/ --exclude=etc/services #排除多个 root@haoyu1[17:05:32]~# tar czf etc.tar.gz /etc/ --exclude=etc/passwd -exclude=etc/shadow
-
将需要排除的文件写入文件中 然后进行排除
root@haoyu1[17:16:53]~# cat pc.txt etc/gshadow etc/gshadow etc/passwd etc/passwd etc/shadowetc/shadow etc/security/opasswd etc/pam.d/passwd root@haoyu1[17:16:53]~# tar czXf pc.txt etc.tar.gz /etc/
-
练习
1.环境准备
root@haoyu1[17:19:12]~# yum install mariadb-server
root@haoyu1[17:20:08]~# systemctl start mariadb
root@haoyu1[17:20:32]~# mkdir /backup
案例1.mysql备份及恢复
root@haoyu1[17:20:43]~# tar cJk /backup/mysql.tar.xz /var/lib/mysql/
root@haoyu1[17:21:38]~# tar xf /backup/mysql.tar.xz -C /
案例2 mysql备份及恢复
root@haoyu1[17:22:36]~# cd /var/lib/mysql/
root@haoyu1[17:22:55]/var/lib/mysql# tar cJf /backup/mysql.tar.xz *
root@haoyu1[17:23:19]/var/lib/mysql# tar tf /backup/mysql.tar.xz
root@haoyu1[17:23:50]/var/lib/mysql# tar xf /backup/mysql.tar.xz -C /var/lib/mysql/