1.什么是文件壓縮?
- 將多個文件或目錄合并成為一個特殊的文件戒突。
2.為什么要對文件進行壓縮屯碴?
- 減小文件的體積
- 加快資源的傳輸
- 節(jié)省網(wǎng)絡的帶寬
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
#查看包內(nèi)文件的內(nèi)容
- 使用前先查看是否安裝了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命令查看文件的內(nèi)容
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
- 不解壓壓縮查看壓縮包中的內(nèi)容
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內(nèi)容至/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 | 創(chuàng)建新的歸檔文件 |
---|---|
x | 對歸檔文件解包 |
t | 列出歸檔文件里的文件列表 |
f | 指定包文件名实牡,多參數(shù)f寫最后 |
z | 使用gzip壓縮歸檔后的文件(.tar.gz) |
j | 使用bzip2壓縮歸檔后的文件(.tar.bz2) |
J | 使用xz壓縮歸檔后的文件(.tar.xz) |
c | 指定解壓目錄位置 |
x | 排除多個文件(寫入需要排除的文件名稱) |
h | 打包軟鏈接 |
--exclude | 在打包的時候?qū)懭胄枰懦募蚰夸?/strong> |
- 常用打包與壓縮組合
cjf | 打包tar.bz格式 |
---|---|
cJf | 打包tar.xz格式(很少使用) |
zxf | 解壓tar.gz格式 |
jxf | 解壓tar.bz格式 |
czf | 打包tar.gz格式(常用) |
tf | 查看壓縮包內(nèi)容 |
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方式壓縮
-
查看包內(nèi)容
#.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.環(huán)境準備
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/