5.Linux檔案與檔案系統的壓縮和打包
目錄
1.壓縮檔案案的用途
壓縮檔案,顧名思義就是對檔案進行壓縮,通過一些技術手段在不改變資訊內容的前提下減少檔案佔用磁碟的記憶體,在進行網路傳輸時,可以減少傳輸時間。
2.Linux 系統常見的壓縮指令
在 Linux 的環境中,壓縮檔案案的副檔名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』
使用副檔名的意義:每種壓縮工具壓縮出來都會有一個字尾,當你解壓是也是應給用對應的解壓工具將壓縮檔案解壓出來,才會的到你原本正確的文件,就像加密和解密一樣,解密方式不對,資訊也就破譯不出來。
以下的副檔名是對應的軟體和含義:
壓縮副檔名 | 含義 |
*.Z | compress 程式壓縮的檔案 |
*.gz | gzip 程式壓縮癿檔案 |
*.bz2 | bzip2 程式壓縮癿檔案 |
*.tar | tar 程式打包癿資料,並沒有壓縮過 |
*.tar.gz | tar 程式打包的檔案,其中並且經過gzip的壓縮 |
*.tar.bz2 | tar 程式打包的檔案,其中並且經bzip2 的壓縮 |
3.壓縮工具之:gzip、zcat
gzip是Linux當前用的最廣的壓縮工具。
命令:gzip
解釋:壓縮檔案
命令:zcat
解釋:檢視壓縮檔案內容
語法:
gzip [選項] 檔案名
zcat 檔案名
選項
選項 | 含義 |
-c | 將壓縮的資料輸出到螢幕上,可透過資料流重導向來處理 |
-d | 夾壓縮的引數顯示,解壓 |
-t | 檢驗一個壓縮檔案的一執行,檢查檔案是否出差錯 |
-v | 顯示出原檔案/壓縮檔案的壓縮比等資訊 |
-# |
壓縮等級:-1 最快,壓縮比差,-9 最慢,壓縮比好,預設是:-6 |
例子:
複製一個 :etc/hosts 檔案到 /test 資料夾下,然後最 hosts 檔案進行壓縮
從上面可以看出,當你壓縮之後,原來的檔案已經不見了,只剩下一個壓縮檔案,但你希望壓縮完,原始檔還在怎麼做?
加上 -c 引數:
使用命令:gzip -c hosts > hosts.gz
解壓 hosts.gz 壓縮檔案,使用命令:gzip -d hosts.gz
4.壓縮工具之:bzip2、bzcat
命令:bgzip2
解釋:壓縮檔案
命令:bzcat
解釋:檢視壓縮檔案內容
語法:
bgzip2 [選項] 檔案名
bzcat 檔案名
選項
選項 | 含義 |
-c | 將壓縮過程產生的資料輸出到螢幕上 |
-d | 解壓縮 |
-k | 保留原檔案 |
-z | 壓縮的引數 |
-v | 顯示原檔案/壓縮檔案的壓縮比資訊 |
-# | 壓縮比引數,-9:最佳,-1:最快 |
例子:
從 : /etc 拷貝一個hosts 檔案到 /test 資料夾下,然後使用 bzip2 進行壓縮和解壓
如果想壓縮後保留原檔案怎麼做?
使用命令:bizp -c hosts > hosts.bz2
檢視bzip2的壓縮檔案,使用bzcat命令:
5.打包工具: tar
功能:歸檔,把多個檔案歸檔成一個檔案,但是沒有壓縮功能,,不僅文件大小不會變小反而會增大,因為多了一個打包的東西,它也是需要佔用空間的。
例子:當你進行搬遷的時候,只需要叫搬家公司把你家裡零零散散的東西,全部打包放入一輛打的汽車裡面,不用一次拿一點,把東西進行分類打包,收起來方便,找起來也方便,但是佔用的空間還是一樣的,因為沒有對這些東西進行壓縮,所以說打包就是讓你的物品看起來有規律,根據你自己的方式。
命令:tar
解釋:打包檔案
語法:
tar [選項] 檔案
選項
選項 | 含義 |
-c | 建立歸檔檔案 |
-x | 解開歸檔檔案 |
-t | 檢視壓縮文包內的檔案(不解檔的情況下) |
-z | 用Gzip壓縮或者解壓 |
-j | 用bzip壓縮或者解壓 |
-v | 顯示歸檔或解檔過程 |
-f | 目標檔名 |
-p | 保留原始的許可權與屬性 |
-P | 使用絕對路徑來壓縮 |
-C | 提示解壓到目錄 |
例子:
建立一個歸檔檔案(-c),顯示歸檔過程(-v),指明打包後的名字(-f)為:hosts.tar,打包的 hosts 這個檔案
解釋:把檔案 hosts 歸檔為一個名為:hosts.tar的歸檔檔案,並顯示歸檔過程。
命令:tar -cvf hosts.tar hosts
歸檔後歸檔檔案還變大了:
上面可以發現,歸檔的時候原檔案還是存在的,但是你想歸檔的時候自動刪除原檔案怎麼做?
使用命令:tar tar -cvf hosts.tar hosts --remove-files
如何在解檔的情況下檢視檔案的內容呢?
使用命令:tar -tvf hosts.tar
如何解壓這個檔案?
使用引數(-x)解檔,使用引數(-f)指令解檔檔案,引數(-v)顯示接檔過程:
使用命令:tar -xvf hosts.tar
把打包檔案解壓到指定資料夾中:
在 /test 新建一個資料夾,package ,然後他hosts.tar解檔到package 這個資料夾中
例子2:把多個檔案打包在一起
把 /etc 資料夾下的services、passwd、hosts資料夾拷貝到 、/test 資料夾下,然後將他們打包後命名為:mypackage01.tar
不解檔的情況下檢視檔案內容:
現在已經把三個檔案全部打包在mypackage.tar當中,我們如何之解檔我們需要的檔案呢?比如之接檔:passwd 這個檔案:
使用命令:tar -xvf mypackage01.tar passwd
6.打包壓縮
在打包之後同時對這個檔案進行壓縮。
命令:tar
解釋:打包檔案
語法:
tar [選項] 檔案
選項
選項 | 含義 |
-c | 建立歸檔檔案 |
-x | 解開歸檔檔案 |
-t | 檢視壓縮文包內的檔案(不解檔的情況下) |
-z | 用Gzip壓縮或者解壓 |
-j | 用bzip壓縮或者解壓 |
-v | 顯示歸檔或解檔過程 |
-f | 目標檔名 |
-p | 保留原始的許可權與屬性 |
-P | 使用絕對路徑來壓縮 |
-C | 提示解壓到目錄 |
例子:
結合上面的知識,在打包檔案 services、passwd 、hosts檔案的同時,刪除原檔案,然後再使用Gzip進行壓縮:
使用命令:tar -zcvf mypackage.tar.gz * --remove-files
解釋:cvf引數和上面一樣代表一個簡單的歸檔,加上z引數代表還要進行壓縮,並指定用Gzip,* 代表是對所有檔案進行操作,--remove-files 代表只保留打包壓縮檔案,注意:打包壓縮的字尾名是:.tar.gz 代表是先進行打包然後用Gzip壓縮。
如何進行解檔和解壓呢?
使用命令:tar -zxvf package02.tar.gz
解釋:-z引數後面跟了一個-x引數,此時-x引數不僅有解檔的功能,還具有解壓的功能,而且解壓的是Gzip型別的壓縮檔案。
同理可以在打包的同時也可以用bzip2來壓縮和解壓,只需要把上面的-z引數改變成-j即可,如下命令:
打包壓縮:tar -jcvf mypackage.tar.gz * --remove-files
解壓解檔:tar -jcvf mypackage.tar.gz * --remove-files