1. 程式人生 > >linux系統下tar/gz/7z/xz/bz2/zip等各種格式的打包壓縮解壓

linux系統下tar/gz/7z/xz/bz2/zip等各種格式的打包壓縮解壓

linux系統下總會遇到各種格式的壓縮包,什麼tar/gz/7z/xz/bz2/zip等等,每種格式檔案的解壓和壓縮方法都不完全一致,所攜帶的引數也都各有千秋,初學者往往會一臉茫然,不知如何是好。於是,本文就對上述各種常見的檔案和命令進行一番總結和對比,以便查閱和參考。

一、tar/tgz/tar.gz/tar.bz2/tar.xz

1、優勢特點

tar是在Linux中使用得非常廣泛的文件打包格式。它的好處就是它只消耗非常少的CPU以及時間去打包檔案,但它僅僅只是一個打包工具,並不負責壓縮。

而實際使用中,除了要打包之外,往往還需要進行一下壓縮,提高空間利用率。因此,很多時候,tar命令並不是單獨出現的,而是伴隨著其他的壓縮命令一起出現。比如:tar.gz格式,tar.bz2格式,tar.xz格式

等等。另外,也有可能會縮寫合併之後出現,比如:tgz格式。對於這些檔案應該如何處理呢,下面就進行詳細的分析。

2、壓縮命令

tar -cvf target_name.tar dir_or_file                    # 將目標打包成一個*.tar格式的檔案
tar -czvf target_name.tgz dir_or_file                   # 將目標打包成一個*.tgz格式的檔案
tar -czvf target_name.tar.gz dir_or_file                # 將目標打包並壓縮成一個*.tar.gz格式的檔案
tar -cjvf target_name.tar.bz2 dir_or_file # 將目標打包並壓縮成一個*.tar.bz2格式的檔案

相對上述幾類檔案,*.tar.xz檔案則比較特殊,需要兩條命令來進行打包和壓縮:

tar -cvf target_name.tar dir_or_file                    # 1.將目標打包成一個*.tar格式的檔案
xz -z target_name.tar.xz                                # 2.將打包好的檔案壓縮成一個*.tar.xz格式的檔案

3、解壓命令

tar -xvf pakage_name.tar                                # 解開一個*.tar的檔案包內容到當前目錄下
tar -xzvf pakage_name.tgz                               # 解開一個*.tgz的檔案包內容到當前目錄下
tar -xzvf pakage_name.tar.gz                            # 解開一個*.tar.gz的壓縮包內容到當前目錄下
tar -xjvf pakage_name.tar.bz2                           # 解開一個*.tar.bz2的壓縮包內容到當前目錄下

上面這幾個解包命令將會將文件解開在當前目錄下面。當然,你也可以用引數”-C”來更改解包的路徑:

tar -xvf pakage_name.tar -C /opt/target_dir/            # 解開一個*.tar的檔案包內容到指定目錄下
tar -xzvf pakage_name.tgz -C /opt/target_dir/           # 解開一個*.tgz的檔案包內容到指定目錄下
tar -xzvf pakage_name.tar.gz -C /opt/target_dir/        # 解開一個*.tar.gz的壓縮包內容到指定目錄下
tar -xjvf pakage_name.tar.bz2 -C /opt/target_dir/       # 解開一個*.tar.bz2的壓縮包內容到指定目錄下

同上,*.tar.xz檔案同樣比較特殊,需要兩條命令來解開:

xz -d pakage_name.tar.xz                                # 1.解開tar.xz壓縮包為tar格式包
tar -xvf pakage_name.tar                                # 2.解開tar格式包到當前目錄下

4、引數說明

  • 命令型別引數:
    • -c或–create:建立新的備份檔案。
    • -x或–extract或–get:從備份檔案中還原檔案。
  • 壓縮方式引數:
    • -j或–bzip2:以bz2的演算法來壓縮或者解壓檔案。
    • -z或–gzip或–ungzip:通過 gzip 指令處理備份檔案。
  • 其他常用引數:
    • -v或–verbose:顯示指令執行過程。
    • -C<目的目錄>或–directory=<目的目錄>:切換到指定的目錄。

二、7z

1、優勢特點

這是一個非通用的命令格式。在一般的linux發行系統上都沒有原配,需要自己下載安裝,以Ubuntu為例,直接使用下述命令即可。

sudo apt-get install p7zip

2、壓縮命令

7za a -t7z -r -mx=9 Mytest.7z /opt/temp/*
  • a 代表新增檔案/資料夾到壓縮包。
  • t 是指定壓縮型別,這裡定為7z,可不指定,因為7za預設壓縮型別就是7z。
  • r 表示遞迴所有的子資料夾。
  • Mytest.7z 是壓縮好後的壓縮包名。
  • /opt/temp/*:是壓縮目標。
  • -mx=9 表明我們需要極限的壓縮比。預設為5。

3、解壓命令

7za x test.7z -r -o./
  • x 代表解壓縮檔案,並且是按原始目錄樹解壓(還有個引數 e 也是解壓縮檔案,但其會將所有檔案都解壓到根下,而不是自己原有的資料夾下)。
  • test.7z 是壓縮檔案。
  • r 表示遞迴解壓縮所有的子資料夾。
  • o 是指定解壓到的目錄,-o後是沒有空格的,直接接目錄。這一點需要注意。

三、zip/unzip

1、優勢特點

linux下提供了zip和unzip程式,zip是壓縮程式,unzip是解壓程式。

2、壓縮命令

zip target.zip dir_or_file

3、解壓命令

unzip pakage_name.zip

4、引數說明

zip命令的引數:

  • A 調整可執行的自動解壓縮檔案。
  • d 從壓縮檔案內刪除指定的檔案。
  • D 壓縮檔案內不建立目錄名稱。
  • F 嘗試修復已損壞的壓縮檔案。
  • g 將檔案壓縮後附加在既有的壓縮檔案之後,而非另行建立新的壓縮檔案。
  • j 只儲存檔名稱及其內容,而不存放任何目錄名稱。
  • m 將檔案壓縮並加入壓縮檔案後,刪除原始檔案,即把檔案移到壓縮檔案中。
  • o 以壓縮檔案內擁有最新更改時間的檔案為準,將壓縮檔案的更改時間設成和該檔案相同。
  • q 不顯示指令執行過程。
  • r 遞迴處理,將指定目錄下的所有檔案和子目錄一併處理。
  • S 包含系統和隱藏檔案。
  • v 顯示指令執行過程或顯示版本資訊。
  • <壓縮效率> 壓縮效率是一個介於 1-9 的數值。

unzip命令的引數:

  • f 更新現有的檔案。
  • l 顯示壓縮檔案內所包含的檔案。
  • v 執行是時顯示詳細的資訊。
  • C 壓縮檔案中的檔名稱區分大小寫。
  • j 不處理壓縮檔案中原有的目錄路徑。
  • L 將壓縮檔案中的全部檔名改為小寫。
  • n 解壓縮時不要覆蓋原有的檔案。
  • o 不必先詢問使用者,unzip 執行後覆蓋原有檔案。
  • P<密碼> 使用 zip 的密碼選項。
  • q 執行時不顯示任何資訊。
  • [.zip 檔案] 指定.zip 壓縮檔案。
  • [檔案] 指定要處理.zip 壓縮檔案中的哪些檔案。
  • d<目錄> 指定檔案解壓縮後所要儲存的目錄。
  • x<檔案> 指定不要處理.zip 壓縮檔案中的哪些檔案。