打包跟壓縮的區別:
打包是指將多個文件或者目錄放在一起,形成一個總的包,這樣便於保存和傳輸,但是大小是沒有變化的,壓縮是指將一個或者多個大文件或者目錄通過壓縮算法是文件的體積變小以達到壓縮的目的,可以節省存儲空間,在壓縮的時候通常是先打包再壓縮;
tar命令
tar命令參數前面加”-"與不加“-”的區別:
tar命令參數前面加不加“-”執行命令的結果是沒有區別的,區別只要是在與linux風格方面,加“-”屬於System V風格,不加“-”屬於BSD風格,所以在使用tar命令的時候它的參數加不加“-”結果是一樣的,看個人的使用方式;
常用參數:
-z | 是否同時具有gz屬性 |
-j | 是否同時具有bz2屬性 |
-J | 是否同時具有xz屬性 |
-x | 解壓縮、提取打包的內容 |
-t | 查看壓縮包內容 |
-c | 建立一個壓縮,打包文檔 |
-C | 切換到指定目錄,表示指定解壓縮包的內容和打包的內容存放的目錄 |
-v | 顯示壓縮或者打包的內容 |
-f | 使用文件名,在f後面要接壓縮後的文件的名字,只要用到tar命令,-f選項是必須要用的,-f參數在使用的時候一定排在其他參數的後面,在最右邊 |
-p | 保留備份數據的原本權限與屬性,常用於備份(-c)重要的配置文件 |
-P | 保留絕對路徑 |
一、打包
實例:
a.將/root/下的ceshi.txt文件和anaconda-ks.cfg文件和time.sh文件打包爲一個文件,名稱爲“jihe.tar”:
b.查看jihe.tar文件的內容:
c.提取jihe.tar文件的內容到/opt目錄下:
如果不用“-C”指定目錄則會提取內容到當前目錄
二、壓縮
linux主要有三種壓縮方式:
1.gzip:是公認的壓縮這速度最快,壓縮大文件的時候與其他的壓縮方式相比更加明顯,歷史最久,應用最廣泛的壓縮方式
2.bzip:壓縮形成的文件小,但是可用性不如gzip
3.xz:是最新的壓縮方式,可以自動提供最佳的壓縮率
建議的壓縮的時候標明後綴:
參數 | 作用 | 命名方式 |
-z | 用於gzip壓縮方式 | 文件名.tar.gz |
-j | 用於bzip2壓縮方式 | 文件名.tar.bz2 |
-J | 用於xz壓縮方式 | 文件名.tar.xz |
實例:用不同的壓縮方式壓縮/root/目錄下的Golden.apk文件
先查看Golden.apk文件的大小:
可以看到Golden.apk文件的大小爲187M
a.用gzip壓縮方式將Golden.apk文件壓縮爲Golden.apk.tar.gz文件:
b.用bzip2的壓縮方式將Golden.apk文件壓縮爲Golden.apk.tar.bz2文件:
從上圖可以看出紅色方框內有報錯,這個報錯的原因是缺少bzip2的包,需要安裝一個bzip2軟件包
安裝完成之後再重新壓縮:
在壓縮的過程中,我們可以發現:
壓縮速度:gz > bz2 > xz
壓縮率:xz > bz2 > gz
三、解壓
先刪除/root/目錄下的Golden.apk文件:
tar命令式一個很聰明的命令,我們在解壓的時候不需要指明自己壓縮的方式它會自己選擇跟壓縮方式對應的方式去解壓,這話說得有點拗口,例:
a.將Golden.apk.tar.gz解壓到當前目錄:
在解壓gz壓縮方式壓縮文件的時候並不需要加上-z,直接用參數-xf即可,另外兩種壓縮方式在解壓的時候一樣,因爲tar命令會自動選擇,解壓之後壓縮文件還在,如果不指定解壓出來的文件保存在哪裏,那麼會直接解壓在當前目錄
b.指定解壓出來的文件保存的目錄,將Golden.apk.tar.bz2文件解壓在/opt/目錄下:
補充:
a.在打包和壓縮的過程中,我們有時候會看到這樣的語句:tar: 從成員名中刪除開頭的“/”,這個並不是報錯,是因爲沒有加上-P選項,沒有保留原來的絕對路徑去打包或者壓縮,提取打包的內容跟解壓一樣,下面舉一個例子:
將/root/目錄以gzip的方式壓縮爲root.tar.gz壓縮文件:
1.沒有加-P選項:
2.加上-P選項:
解壓的時候同理,如果在壓縮文件的時候使用了-P選項,那麼在解壓的時候也要加上-P選項,不然也會出現”tar: 從成員名中刪除開頭的“/”“,如下圖:
1.不加-P選項解壓使用了-P選項壓縮/root/後的root.tar.gz文件:
2.加上-P選項解壓使用了-P選項壓縮/root/後的root.tar.gz文件:
b.在使用tar壓縮或者打包的時候,可以通過增加--exclude來達到排除指定的文件的目的
將/root/目錄下的harry目錄打包,但是不打包harry目錄下的ha.txt文件,如下圖:
壓縮文件也是同理,想要排除指定的目錄壓縮或者打包也是同理
zip命令和unzip命令
#在使用zip跟unzip命令之前先查看系統有沒有安裝這兩個命令的包,沒有的話要自己安裝
查看有沒有安裝zip跟unzip命令的命令:
rpm -q zip unzip
如果有安裝了命令則會顯示除命令的版本號
zip命令
基本用法:
zip [參數] [壓縮包名] [壓縮的目錄或者文件的路徑]
常用參數:
-m | 將文件壓縮後,刪除原文件 |
-o | 將壓縮文件內的所有文件的最新變動時間設爲壓縮的時間 |
-q | 安靜模式,在壓縮的時候不顯示指令執行的過程 |
-r | 遞歸壓縮,將自定目錄下的所有子文件以及文件一起處理 |
-x | ”文件列表“,壓縮時排除文件列表中的文件 |
實例:
a.壓縮目錄,將/root/目錄下的harry目錄壓縮爲名爲harry.zip壓縮包:
1.正常壓縮,不加-q選項,顯示壓縮的過程:
2.加上-q選項,安靜模式輸出,不顯示壓縮的過程:
b.壓縮多個文件,將/root/目錄下的ceshi.txt文件和anaconda-ks.cfg文件和Golden.apk文件壓縮爲名爲jihe.zip的壓縮包:
因爲壓縮的全是文件,所以可以不用加上-r選項
c.壓縮文件跟目錄,將/root/下的ceshi.txt文件和anaconda-ks.cfg文件和harry目錄壓縮成名爲dajihe.zip的壓縮包:
d.將/root/目錄下的harry目錄壓縮爲harry1.zip壓縮包,排除harry目錄下的ha.txt文件:
unzip命令
基本用法:
unzip [參數] [壓縮文件] (-d [目錄]) //如果不是用括號裏面的內容,則解壓文件在當前工作目錄
常用參數:
-c | 將解壓縮的結果顯示到屏幕上(顯示每一個目錄下的每一個文件的內容),同時對字符做適當的轉換,但是並沒有解壓壓縮包 |
-l | 顯示壓縮文件內所包含的文件 |
-t | 檢查壓縮文件是否正確 |
-v | 執行時顯示壓縮文件的詳細信息 |
-q | 安靜模式,執行時不顯示任何信息 |
-d | 指定文件解壓後存儲的目錄 |
-x | 指定不要處理壓縮文件中的那些文件 |
實例:
a.將harry.zip壓縮包解壓縮的結果顯示出來:
具體會顯示到每一個文件跟每一個文件的內容
b.顯示jihe.zip壓縮包裏面鎖包含的文件
c.檢查dajihe.zip壓縮文件是否正確:
全部OK表示全部文件都是正確的
d.不解壓壓縮文件dajihe.zip,查看壓縮包裏面的內容(查看顯示的文件列表還包含壓縮比率):
#使用-v顯示的信息比使用-l顯示的信息更加詳細
e.將dajihe.zip壓縮包解壓到/opt/目錄下: