前一篇我們介紹了傳統上很常在使用 .tar.gz 壓縮格式,而後來因為壓縮技術的進步,又出現了一個壓縮效果更好的 .tar.bz2 這種壓縮格式,他是使用新的 bzip2 這種壓縮格式代替傳統的 gzip

.tar.bz2 壓縮檔案

.tar.bz2(等同於 .tbz.tb2)這種格式跟 .tar.gz 的做法類似,也是把一般 .tar 檔案再壓縮一次,只是把原本使用的 gzip 換成 bzip2 而已,其餘的概念基本上都是一樣的。

建立 .tar.bz2 壓縮檔案

若要使用 tar 指令建立 .tar.bz2 格式的壓縮檔,可以使用下面這個指令:

tar -jcvf mpi.tar.bz2 mpi

這其實只是把原本的 .tar.gz 壓縮指令的 -z 換成 -j 而已。

.tar.bz2 亦可使用比較簡短的副檔名(.tbz.tb2)代替:

tar -jcvf mpi.tbz mpi

tar -jcvf mpi.tb2 mpi

這幾種副檔名都是一樣的。

.tar.bz2.tar.gz 類似,一樣也都可以分為兩段步驟來壓縮:

tar cvf mpi.tar mpi
bzip2 mpi.tar

解壓縮 .tar.bz2 壓縮檔案

解壓縮 .tar.bz2 壓縮檔也是跟 .tar.gz 的情況類似,把原本的 -z 換成 -j 就可以了:

tar -jxvf mpi.tar.bz2

亦可使用兩段式解壓縮:

bzip2 -d mpi.tar.gz
tar xvf mpi.tar

或是使用管線(pipe)的方式:

bzip2 -cd mpi.tar.bz2 | tar xvf -

基本上這些做法與概念都跟 .tar.gz 的狀況相同,這裡就不重複說明了,若想了解這其中的概念請參考前一篇的說明。

列出 .tar.bz2 壓縮檔案的內容

若要列出 .tar.bz2 檔案中的內容,可使用:

tar -jtvf mpi.tar.bz2

這個也是跟 .tar.gz 的用法類似,只是將 -z 換成 -j 而已。

.tar.bz2 壓縮檔案中解壓縮指定的檔案

若要從 .tar.bz2 壓縮檔中解開特定的檔案,可以直接將要解開的檔案名稱放在所有參數的最後:

tar -jxvf mpi.tar.bz2 "mpi/mpi.R"

若要指定多個檔案也可以:

tar -jxvf mpi.tar.bz2 "mpi/mpi.R" "mpi/pi.c" "mpi/my_phi.c"

若要解開某一類的檔案,也可以使用 --wildcards 參數配合萬用字元來指定要解開的檔案:

tar -jxvf mpi.tar.bz2 --wildcards "*.c"

這樣就會把 mpi.tar.bz2 壓縮檔中所有 C 語言的原始碼(*.c)都解開來,輸出為:
mpi/MPI_Hello.c
mpi/pi.c
mpi/my_phi.c

原則上 .tar.bz2 的使用方式幾乎跟 .tar.gz 相同,只要把對應的 -z 參數換成 -j,剩下的都一樣。