第12章 Linux系統管理-打包與壓縮

第12章 Linux系統管理-打包與壓縮

1. 壓縮包概述

1. 什麼是壓縮包linux

 
 
 
xxxxxxxxxx
 
 
 
 
就是將多個文件和目錄合併爲一個特殊的文件
 

2. 爲何使用壓縮包shell

 
 
 
xxxxxxxxxx
 
 
 
 
1.減小佔用的體積
2.加快網絡的傳輸
 
       
 

3. Windows的壓縮和Linux的有什麼不一樣windows

 
 
 
xxxxxxxxxx
 
 
 
 
windows: zip  rar(linux不支持)
linux: zip tar.gz tar.bz2  .gz
若是但願windows的軟件能被linux解壓,或者linux的軟件包被windows能識別,選擇zip.
PS: 壓縮包的後綴不重要,但必定要攜帶.
 

4. Linux下常見的壓縮包類型bash

格式 壓縮工具
.zip zip壓縮工具
.gz gzip壓縮工具,只能壓縮文件,會刪除源文件(一般配合tar使用)
.bz2 bzip2壓縮工具,只能壓縮文件,會刪除源文件(一般配合tar使用)
.tar.gz 先使用tar命令歸檔打包,而後使用gzip壓縮
.tar.bz2 先使用tar命令歸檔打包,而後使用bzip壓縮

2. Zip打包壓縮

 
 
 
xxxxxxxxxx
 
 
 
 
使用zip命令能夠對文件進行壓縮打包,解壓則須要使用unzip命令
 
 
 
 
xxxxxxxxxx
 
 
 
 
#默認狀況下,沒有zip和unzip工具,須要進行安裝
[root@qls ~]# yum install zip unzip -y
 
        
#壓縮文件爲zip包(並不會刪除源文件)
   
[root@qls ~]# zip   filename.zip   filename
 
        
#壓縮目錄爲zip包(壓縮時須要添加-r參數,遞歸的方式)
 
        
[root@qls ~]# zip -r dir.zip   dir/
 
        
#解壓zip文件包(不要覆蓋掉原來的文件,儘量找一個空的目錄解壓,而後再mv移動過去)
[root@qls ~]# unzip filename.zip
#測試linux的zip是否能與windows的zip互通   ---->能夠
#zip命令經常使用選項
-q #不顯示指令執行過程;
-r #遞歸處理,將指定目錄下的全部文件和子目錄一併處理;
-T#檢查壓縮包是否完整;
#unzip命令的選項
-l#顯示壓縮文件內所包含的文件;
-t#檢查壓縮文件是否正確
-q#執行時不顯示任何信息;
-d      #指定文件解壓縮後所要存儲的目錄;
 

3. Gzip打包壓縮

 
 
 
xxxxxxxxxx
 
 
 
 
gzip是在Linux系統中常常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。
 
 
 
 
xxxxxxxxxx
 
 
 
 
#若是系統中沒有該命令,請進行下載安裝
[root@qls ~]# yum install gzip -y
#對文件進行壓縮
[root@qls ~]# gzip file
#查看gz壓縮後的文件
[root@qls ~]# zcat file.gz
#解壓gzip的壓縮包
[root@qls ~]# gzip -d file.gz
#對目錄進行壓縮
[root@qls ~]# gzip -r dir/
#解壓目錄
[root@qls ~]# gzip -rd dir/
#選項
-d#解開壓縮文件;
-r#遞歸處理,將指定目錄下的全部文件及子目錄一併處理;
 

4. Tar打包壓縮

 
 
 
xxxxxxxxxx
 
 
 
 
tar是linux下最經常使用的壓縮與解壓縮,支持文件和目錄的壓縮歸檔
 
 
 
 
xxxxxxxxxx
 
 
 
 
#語法
tar [OPTION...] [FILE]...
#選項
z #使用gzip壓縮歸檔後的文件(.tar.gz)
j#使用bzip2壓縮歸檔後的文件(.tar.bz2)
J#使用xz壓縮歸檔後的文件(.tar.xz)
c #表示建立壓縮包
v #表示顯示建立壓縮包和解壓的過程
f #表示指定壓縮包(f必定要放在這幾個參數的最後)
t #查看壓縮包內容
x #解壓
C#指定解壓目錄位置
X#排除多個文件(寫入須要排除的文件名稱)
P#使用絕對路徑打包
h#打包軟鏈接
--exclude#排除不須要打包的文件
#經常使用打包與壓縮組合
czf#打包tar.gz格式
cjf#打包tar.bz2格式
cJf#打包tar.xz格式
xf#自動選擇解壓模式
tf#查看壓縮包內容
 
 
 
 
xxxxxxxxxx
 
 
 
 
#如何打包,將全部的文件,和目錄打成一個包,tar命令進行歸檔,gzip進行壓縮,tar.gz
[root@qls /]# tar czf tt.tar.gz var/ dir1/ test.log
#擴展瞭解項:
#打包爲bz2格式的壓縮包
[root@qls /]# tar cjf tt.tar.bz2 var/ dir1/ test.log   
 
#打包爲xz格式的壓縮包
[root@qls ~]# tar cJf tt.tar.xz var/ dir1/ test.log   
#查看壓縮包的內容
[root@qls ~]# tar tf tt.tar.gz 
 
        
#解壓軟件包,解壓tar.gz tar.bz2 tar.xz
[root@qls ~]# tar xf tt.tar.gz
#解壓默認是解壓到當前目錄下
[root@qls ~]# tar xf tt.tar.gz -C /tmp/
#打包時的路徑選擇: 相對路徑 絕對路徑
[root@qls ~]# tar czf sys.tar.gz /etc/ /var/
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
#問題: 爲何有一個刪根的操做:
防止在解壓的過程當中,直接覆蓋原有的目錄以及文件
 
        
#推薦的打包方式:
#將etc目錄 var目錄 統一打包存放到/root/目錄下的 etc.tar.gz壓縮包中
[root@qls ~]# cd /
[root@qls /]# tar czf root/etc.tar.gz   etc/ var/
#如何打包時排除文件: (備份不須要使用排除,)
#1.排除單個文件
[root@qls /]# tar czf etc.tar.gz --exclude=etc/services etc/
#2.排除多個文件
[root@qls /]# tar czf etc.tar.gz --exclude=etc/services --exclude=etc/rc.local etc/
[root@qls /]# tar czf etc.tar.gz --exclude=etc/{passwd,shadow,gshadow} etc/ 
#3.將須要排除的文件寫入文件中
[root@qls /]# cat paichu.list#必須寫相對路徑
etc/services
etc/rc.local
etc/rc.d/rc.local
#經過-X指定須要排除的文件列表, 最後進行打包壓縮
[root@qls /]# tar czfX etc.tar.gz paichu.list etc/
#如何打包時保留軟鏈接文件
#打包連接文件,打包連接文件的真實文件
[root@qls ~]# cd /
[root@qls /]# tar czfh local.tar.gz etc/rc.local
 

Find與Tar打包的結合方式服務器

 
 
 
xxxxxxxxxx
 
 
 
 
#打包/tmp下全部文件
[root@qls ~]# cd /
[root@qls /]# find tmp/ -type f | xargs tar czf tmp.tar.gz
#打包/tmp下全部文件
[root@qls /]# tar czf tmp.tar.gz $(find /tmp/ -type f)
#統計文件的大小
[root@qls /]# du -sh tmp.tar.gz
 
        
#經統計結果對比: 壓縮前的文件或目錄假設佔用了6MB,壓縮後可能就佔用1MB.
 

Find與Du打包的結合方式網絡

 
 
 
xxxxxxxxxx
 
 
 
 
#擴展: 統計/下面的目錄的大小,只統計1級
[root@qls ~]# find / -maxdepth 1 -type d |sed -r 's#(.*)# du -sh \1 #g'|bash
[root@qls ~]# ls -d /* |xargs du -sh
[root@qls ~]# du -sh /*
 

5. Linux打包與壓縮習題

 
 
 
x
 
 
 
 
1.列出linux經常使用打包工具並寫相應的壓縮、解壓縮參數
gzip: 只能壓縮單個文件
1.gzip  filename   #打包|壓縮
2.gzip -d filename.gz #解壓
3.zcat  filename.gz#查看壓縮包中的內容
zip: 支持壓縮多個目錄和文件--->但願能與windows進行互通
1.zip  -r   filename.zip    filename
  命令  遞歸 選項             參數
  搬家  多個 箱子             物品
2. unzip  filename.zip     #解包
  
tar: 可以支持單個文件和多個文件,並也能與windows進行互通. 由於不少開源的項目提供的壓縮包就是tar.gz
tar czf  filname.tar.gz   filename directory#打包
tar xf   filname.tar.gz#解壓
tar xf   filname.tar.gz -C /tmp#解壓到指定解壓的目標位置
tar tf   filename.tar.gz#查看壓縮包內容
-----------------------------------
tar cjf  filename.tar.bz2#打包格式爲bz2
tar cJf  filename.tar.xz#打包格式爲xz
2.如何用gzip命令對文件進行壓縮、解壓縮,給出實踐步驟。
1.gzip  filename   #打包|壓縮
2.gzip -d filename.gz #解壓
3.如何用zip命令對文件以及目錄進行壓縮、解壓縮,給出實踐步驟。
1.zip  -r   filename.zip    filename
  命令  遞歸 選項             參數
  搬家  多個 箱子             物品
2. unzip  filename.zip     #解包
4.建立一個本身名字的文件至/opt目錄,給出實踐步驟。
[root@qls ~]# touch /opt/ttt
 
        
5.打包opt/整個目錄,並命名爲opt_2019_08_19.tar.gz,給出實踐步驟。
#寫死
[root@qls ~]# tar czf opt_2019-08-19.tar.gz /opt/
[root@qls ~]# date +%F
2019-08-19
[root@qls ~]# tar czf opt_$(date +%F).tar.gz /opt/
[root@qls ~]# ls
opt_2019-08-19.tar.gz 
[root@qls ~]# date -s "2019/08/16"
[root@qls ~]# tar czf opt_$(date +%F).tar.gz /opt/
opt_2019-08-16.tar.gz
6.查看打包好的opt_2019_08_19.tar.gz裏的文件,給出實踐步驟。
[root@qls ~]# tar tf opt_2019-08-19.tar.gz 
7.將打包好的opt_2019_08_19.tar.gz內容指定解壓至/tmp目錄,並給出實踐步驟。
[root@qls ~]# tar xf opt_2019-08-19.tar.gz -C /tmp/
8.打包以當前主機名+ip的命名方式的壓縮包: 好比: www.oldboyedu.com_2019-08-19_10.0.0.99.tar.gz ,壓縮/opt目錄便可
1.提取主機名 hostname
2.提取IP地址 ifconfig ens32|awk '/inet / {print $2}'
3.提取當前時間date +%F
 
        
[root@qls ~]# tar czf $(hostname)_$(ifconfig eth0|awk '/inet / {print $2}')_$(date +%F).tar.gz   /opt 
 

6. 顯示時間命令

 
 
 
xxxxxxxxxx
 
 
 
 
不少shell腳本里面須要打印不一樣格式的時間或日期,以及要根據時間和日期執行操做。
date命令是顯示或設置系統時間與日期。
 
 
 
 
xxxxxxxxxx
 
 
 
 
#選項
-d #根據你的描述顯示日期
-s   #修改日期
%H #小時,24小時制(00~23)
%M #分鐘(00~59)
%s #從1970年1月1日00:00:00到目前經歷的秒數
%S #顯示秒(00~59)
%T #顯示時間,24小時制(hh:mm:ss)
%d #一個月的第幾天(01~31)
%j #一年的第幾天(001~366)
%m #月份(01~12)
%w #一個星期的第幾天(0表明星期天)
%W #一年的第幾個星期(00~53,星期一爲第一天)
%y #年的最後兩個數字(1999則是99)
%Y #年,實際
%F #顯示日期(%Y-%m-%d)
 
 
 
 
xxxxxxxxxx
 
 
 
 
#date命令示例:
[root@qls ~]# date
Sat May 18 21:33:24 CST 2019
[root@qls ~]# date +%F
2019-05-18
[root@qls ~]# date +%T
21:33:33
[root@qls ~]# date +%y-%m-%d
19-05-18
[root@qls ~]# date +%w
6
[root@qls ~]# date +%s
1558186507
[root@qls ~]# date +%d
18
[root@qls ~]# date +%W
19
[root@qls ~]# date +%j
138
[root@qls ~]# date -d "-1 day" +%F
2019-05-17
[root@qls ~]# date -d "+1 day" +%F
2019-05-19
[root@qls ~]# date -d "1 d" +%F
2019-05-18
[root@qls ~]# date -d "+1 year" +%F
2020-05-18
[root@qls ~]# date -d "11 year" +%F
2030-05-18
[root@qls ~]# date -d "+1 year" +%F
2020-05-18
[root@qls ~]# date -d "1 year" +%F
2020-05-18
[root@qls ~]# date -s 20201231
Thu Dec 31 00:00:00 CST 2020
[root@qls ~]# date +%F
2020-12-31
[root@qls ~]# date -s 11
Sat May 18 11:00:00 CST 2019
[root@qls ~]# date +%T
11:00:15
[root@qls ~]# date -s 11:30:30
Sat May 18 11:30:30 CST 2019
[root@qls ~]# date +%T
11:30:31
[root@qls ~]# date -s "20201231 12:00:00"
Thu Dec 31 12:00:00 CST 2020
[root@qls ~]# date +%F
2020-12-31
[root@qls ~]# date +%T
12:00:12
 

7. 如何讓系統自動同步時間

 
 
 
xxxxxxxxxx
 
 
 
 
ntpdate命令是用來設置本地日期和時間。
PS1:必須有 root 權限才能在主機上運行這個命令。
PS2:若是NTP服務器守護程序在主機上運行,命令將拒絕ntpdate設置日期。
 
 
 
 
x
 
 
#系統中默認沒有該命令,須要自行下載安裝
[root@qls ~]# yum install ntpdate -y 
#經常使用可進行同步時間的NTP服務器
ntp.aliyun.com
ntp1.aliyun.com......ntp7.aliyun.com
#同步時間
[root@qls ~]# ntpdate ntp.aliyun.com
18 May 21:49:06 ntpdate[36642]: adjust time server 203.107.6.88 offset -0.003359 sec
[root@qls ~]# date +%F_%T
2019-08-19_21:49:27
 
 
#讓系統自動同步時間,只需添加一條定時任務便可。
相關文章
相關標籤/搜索