在這篇文章中,我將總結 Linux 系統下面常見的幾種壓縮工具,包括它們的壓縮命令、解壓縮命令、特殊參數等,同時,我還將介紹打包命令 tar,以及如何將其與壓縮命令同時使用。
Linux 下面的壓縮命令主要有下面幾個:
打包命令:
如果和 gzip 一塊使用:.tar.gz 或者 .tgz所謂打包,就是將一個文件、或者一堆文件打包成一個單一文件的過程。
這裡還需要說明一個術語:壓縮率。其計算公式是:(壓縮後文件體積) / (壓縮前文件體積)。
還有一點是:gzip bzip2 xz 這幾個命令都只能對但一個文件做壓縮,不能壓縮一個目錄,壓縮目錄需要通過 tar 配合這幾個壓縮命令來處理,或者使用 zip 命令
zip 命令能提供的功能和 tar 非常類似,更詳細的使用方法使用 tldr zip & tldr unzip 來查看。
2. 使用方法2.1 gzip 命令gzip 會就地壓縮,也就是源文件會被壓縮文件替代。
壓縮
gzip <file_name>執行完上述命令,會在當前目錄下生成 file_name.gz 文件。
壓縮命令有個比較有用的參數:
gzip -v <file_name>解壓縮
gzip -d <file_name>.gz或者
gunzip <file_name>.gz會在當前目錄下生成 <file_name> ,源壓縮文件不在了。
2.2 bzip2 命令默認情況下,bzip2 命令也是就地壓縮,壓縮後源文件將會被替代。
使用方法和 gzip 基本一樣,但是能提供更好的壓縮率,當然,付出的代價就是壓縮時間更長。
壓縮
bzip2 <file_name>或者引入 -v 參數查看壓縮率:
bzip2 -v <file_name>將在當前目錄下生成 <file_name>.bz2 文件。
解壓縮
bzip2 -d <file_name>.bz2或者
bunzip2 <file_name>.bz2
2.3 xz 命令默認情況下,xz 命令也是就地壓縮,原始文件將被覆蓋。
使用方法和前面提到的 gzip bzip2 類似,參數也幾乎是一樣的。
壓縮
xz <file_name>或者加上 -v 參數查看壓縮率:
xz -v <file_name>壓縮完後,會在當前目錄下生成 <file_name>.xz 文件。
這時可以使用 -l 參數,來查看壓縮前後的文件對比信息:
xz -l <file_name>.xz舉個例子如下:
tanjuntao@mbp:~/Downloads$ xz -l ppt模板.pptx.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 124.7 KiB 135.5 KiB 0.920 CRC64 ppt模板.pptx.xz
tanjuntao@mbp:~/Downloads$解壓縮
xz -d <file_name>.xz注意,在 xz 命令這裡,沒有 xunz 這種命令哦。
2.4 zip 命令zip 命令和前面的 gzip bzip2 xz 不一樣,它壓縮後不會覆蓋原有的文件。
壓縮單個文件
zip <compresed>.zip <file_name>或者加入 -v 參數,可以查看壓縮率:
zip -v <compresed>.zip <file_name>執行上述命令,將會在當前目錄下新生成 <compresed>.zip 文件,原有的 <file_name> 將繼續保留。
壓縮多個文件
zip <compresed>.zip a.txt b.txt c.txt會將 a.txt, b.txt, c.txt 同時壓縮到 compresed.zip 文件中。
壓縮目錄:
zip -r dir.zip <dir_name>解壓縮
unzip <compresed>.zip
如果這個 .zip 文件是從多個單一文件通過 zip 命令壓縮來的,那麼執行 unzip 將會傾倒裡面所有的文件到當前文件夾;如果這個 .zip 文件是從某個目錄通過 zip -r 壓縮來的,那麼執行 unzip 將會在當前目錄下生成一個 compresed 名字的目錄,目錄裡面的所有文件不會被傾倒在當前目錄。2.5 tar 命令tar 命令的參數可以說是 Linux 上面最複雜且最不容易記憶的幾個之一了,完整的 tar 命令的使用方法可以足夠寫另外一篇文章。在這裡,我主要將介紹 tar 命令最核心的參數。
先解釋下 tar 的作用:tar 是打包命令,也就是將一系列文件,或者某個文件夾,打包成單一文件。如果配合前面介紹的 3 種壓縮命令 gzip bzip2 xz (不包含 zip ),那麼其可以完成 打包+壓縮 的功能。
tar 執行完後,原有文件或者目錄將保留。
下面先介紹 tar 最常用的參數:
-c : create 的意思,創建 tar 文件;-v : verbose 的意思,顯示打包壓縮或者解打包解壓縮過程中的詳細信息;-C : 後面接某個目錄,將文件加壓縮到該特定目錄下(默認是解壓縮在當前目錄)只打包文件不壓縮
打包單個或多個文件:
tar -cv -f target.tar a.txt b.txt c.txt d.txt打包單個目錄或者多個目錄:
tar -cv -f target.tar dir1 dir2 dir3同時打包文件和目錄:
tar -cv -f target.tar dir1 dir2 a.txt b.txt c.txt打包同時用 gzip 壓縮
tar -cvz -f target.tar.gz dir1 dir2 a.txt打包同時使用 bzip2 壓縮
tar -cvj -f target.tar.bz dir1 dir2 a.txt打包同時使用 xz 壓縮
tar -cvJ -f target.tar.xz dir1 dir2 a.txt查看
tar -tvz -f target.tar.gz或者
tar -tvJ -f target.tar.xz解包和解壓縮
tar -xvz -f target.tar.gz上述命令將會在當前目錄下解壓縮,也就是 target.tar.gz 裡面的文件會解壓縮到當前目錄下。
如果要解壓縮到指定目錄怎麼做呢?
使用 -C 參數:
tar -xvz -f target.tar.gz -C ~/test上述命令,會將 target.tar.gz 裡面的所有文件解壓到 ~/test 目錄下。
總結下:tar 命令可以將任意的文件和目錄打包成一個單一文件,解壓縮時,默認是將 tar ball 裡面的所有文件傾倒在當前目錄,如果需要傾倒到其它目錄,使用 -C 參數。