Linux 資料壓縮與歸檔
在 windows 下,對於壓縮這個概念,其實指的的資料壓縮以及資料歸檔。
資料壓縮
bzip2工具
bzip2 工具要的檔案是以 .bz2 結尾,在壓縮大型的二進位制檔案領域非常流行。
bzip2 軟體包有以下幾個工具
- bzip2:用來壓縮檔案
- bzcat:用來顯示壓縮的文字檔案的內容
- bunzip2:用來解壓壓縮後的 .bz2 檔案
- bzip2recover:用來嘗試恢復損毀的壓縮檔案
例如 bzip2 file
可以用來生成壓縮資料 file.bz2,bzcat file.bz2
可以用來檢視壓縮的文字檔案的內容,bunzip2 file.bz2
用來解壓。
也可以用 bzip2 file1 file2
bzip2 -k
bzip2 file
是可以壓縮檔案 file,並且自動生成壓縮檔案 file.bz2,而且還有一點,file 檔案被移除了,這就有點不開心了,而 -k 引數可以在解壓和壓縮的時候,保留原始檔,如 bzip2 -k file
gzip工具
gzip 是 GNU 專案發起的的壓縮工具,生成的壓縮檔案已 .gz 結尾,軟體包郵如下工具
- gzip:用來壓縮檔案
- gzcat:用來檢視壓縮過的文字檔案的內容
- gunzip:用來解壓檔案
gzip -r
gzip 的基本用法與 bzip2 類似,但是 gzip -r
可以對目錄的所有檔案生成壓縮檔案 或 解壓目錄下的所有壓縮檔案。
上圖中可以看到如何用 gzip -r dir1/
對目錄進行壓縮,再看看用 gzip -r dir1
對目錄下的壓縮檔案進行解壓
zip工具
Linux 下 zip 軟體包有5個
- zip:建立一個壓縮檔案,包含指定的檔案和目錄
- zipcloak:建立一個加密的壓縮檔案,包含指定的檔案和目錄
- zipnote:從 zip 檔案提取批註
- zipsplit:將一個現有zip檔案分割成多個更小的固定大小的檔案
- unzip:從壓縮過的 zip 檔案中提取檔案和目錄
在命令列輸入 zip 即可檢視引數說明
zip 工具的強大之處在於,可以將多個檔案壓縮,並歸檔為一個檔案。
zip -r
zip 工具還可以用 zip -r
將一個目錄進行壓縮
可以看到用 zip -r
不僅對目錄下的每一個檔案 進行了壓縮,還保留的目錄的完整性,這個就是與 windows 下的壓縮是一樣的道理。
資料歸檔
bzip2, gzip 雖然可以對檔案進行壓縮,但是並不能把壓縮後的檔案進行歸檔,然而 zip 可以做到既壓縮有歸檔。 但是 zip 並不是 Unix 和 Linux 中的標準歸檔工具,而是 tar 命令。
一般的模式,總結如下
tar mode [options] file/directory
mode | 描述 |
---|---|
-c | 建立一個歸檔檔案 |
-r | 追加檔案到已有的歸檔檔案末尾,這個引數只能作用於未壓縮檔案,-f 引數是必須的 |
-t | 列出已有歸檔檔案的內容 |
-u | 將比歸檔檔案中已有的同名檔案新的檔案追加到該歸檔檔案中 |
-x | 從歸檔檔案中提取檔案 |
options | 描述 |
---|---|
-C | 切換到指定目錄 |
-f | 輸出結果到檔案或裝置file |
-j | 將輸出重定向給 bzip2 命令來壓縮內容 |
-v | 在處理檔案時候顯示檔案到標準輸出 |
-z | 將輸出重定向給 gzip 命令來壓縮檔案 |
例如,建立一個歸檔檔案
tar -cvf test.tar test1/ test2/
-f 引數後面指定歸檔檔名,-c 模式指的是要建立歸檔檔案,-v 把處理檔案顯示的標準輸出上
然後,列出 test.tar 的內容
tar -tf test.tar
然後,再提取歸檔檔案內容
tar -xvf test.tar
但是,這些只是簡單的歸檔操作,而並沒有壓縮,從上面命令看,可以加上 -z 和 -j 來壓縮內容
tar -zcvf test.tgz test1/ test2/
很多開源軟體下載後,都是以 .tgz 結尾的,這些就是經過壓縮的的 tar 檔案。