1. 程式人生 > >Linux 資料壓縮與歸檔

Linux 資料壓縮與歸檔

在 windows 下,對於壓縮這個概念,其實指的的資料壓縮以及資料歸檔。

資料壓縮

bzip2工具

bzip2 工具要的檔案是以 .bz2 結尾,在壓縮大型的二進位制檔案領域非常流行。

bzip2 軟體包有以下幾個工具

  • bzip2:用來壓縮檔案
  • bzcat:用來顯示壓縮的文字檔案的內容
  • bunzip2:用來解壓壓縮後的 .bz2 檔案
  • bzip2recover:用來嘗試恢復損毀的壓縮檔案

例如 bzip2 file 可以用來生成壓縮資料 file.bz2,bzcat file.bz2 可以用來檢視壓縮的文字檔案的內容,bunzip2 file.bz2 用來解壓。

也可以用 bzip2 file1 file2

同時多個檔案進行壓縮,會自動生成 file1.bz2,file2.bz2 兩個壓縮檔案,但是 bzip2 不能對一個目錄下的檔案進行壓縮

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 檔案。