Linux之打包/解包、壓縮/解壓
壓縮/解壓:gzip命令
Linux中壓縮、解壓文件的工具有很多,比如:compress、gzip、bzip2、xz等。這里介紹高頻使用的gzip命令。gzip工具特征在于:只能壓縮文件,不能壓縮目錄。gzip壓縮后默認在原文件名稱后追加 .gz 后綴
# 壓縮若干個指定的文件
gzip file1 file2 ...
# 壓縮當前目錄下的所有文件,其中通配符 * 代表當前目錄下所有文件
gzip *
# 壓縮當前目錄下(含子目錄下)的所有文件,其中通配符 * 代表當前目錄下所有文件
gzip -r *
解壓操作類似,既可以使用gunzi命令。也可以繼續(xù)使用gzip命令,只需添加 -d 選項即可
# 解壓當前目錄下(含子目錄下)的所有文件,其中通配符 * 代表當前目錄下所有文件
gzip -dr *
打包/解包:tar命令
通過對比Linux、Win下的壓縮操作表現(xiàn)來看,似乎發(fā)現(xiàn)一個問題了。Win下可以將多個文件壓縮成一個文件,而在Linux中g(shù)zip命令則是一個一個壓縮的。為此在Linux下需要先將多個文件歸檔到一個文件當中,即所謂的打包(歸檔文件的后綴習慣上用 .tar )。通常使用tar命令即可。事實上該tar命令選項較為復(fù)雜,而且很多選項基本很少用到。故這里只介紹常見的選項
-
-c :創(chuàng)建tar歸檔文件,即所謂的打包 -
-v :命令執(zhí)行過程中顯示正在處理的文件名 -
-f :用以指定操作的tar歸檔文件 -
-x :從tar歸檔文件中提取文件,即所謂的解包 -
-t :列出以查看tar歸檔文件中的內(nèi)容,但不提取 -
-C :切換到指定目錄 -
-z :調(diào)用gzip命令壓縮/解壓文件 -
-Z :調(diào)用compress命令壓縮/解壓文件 -
-j :調(diào)用bzip2命令壓縮/解壓文件 -
-J :調(diào)用xz命令壓縮/解壓文件
1. 打包命令如下所示
# 將指定文件打包到歸檔文件 file1.tar 中
tar -cvf file1.tar file1 file2 dir1/ dir2/ ...
# 將當前目錄下(含子目錄下)的所有文件打包到歸檔文件 file1.tar 中,其中通配符 * 代表當前目錄下所有文件
tar -cvf file1.tar *
2. 查看歸檔文件中的內(nèi)容
# 查看歸檔文件 file1.tar 中的內(nèi)容
tar -tf file1.tar
3. 解包命令如下所示
# 對指定tar歸檔文件在當前工作目錄下進行解包
tar -xvf temp/file1.tar
# 對指定tar歸檔文件在指定目錄下進行解包
tar -xvf temp/file1.tar -C ./temp2/
組合拳
故在Linux當中對多文件進行壓縮前,一般都需要先打包成tar歸檔文件;而在解壓后,通常得到也是一個tar歸檔文件,還需要再次解包。為此,tar命令中直接提供了 compress 、 -z 、 -j 、 -J 等選項,以便直接調(diào)用compress、gzip、bzip2、xz等命令進行壓縮/解壓。故如果期望對多文件進行壓縮,直接利用tar命令即可一次性搞定。解壓文件同理。具體命令如下,這里以使用gzip壓縮為例,如果期望使用其他壓縮命令,只需將下述命令中的 -z 選項 替換為其它壓縮軟件對應(yīng)的選項即可
# 壓縮文件命令組合拳: 對指定文件打包并使用gzip壓縮
tar -zcvf foo.tar.gz file1 file2 dir1 dir2 ...
# 解壓文件命令組合拳:對壓縮文件,先使用gzip解壓,再解包
tar -zxvf foo.tar.gz
壓縮示例
解壓示例
這里強調(diào)下在解壓的時候,我們首先需要知道該壓縮文件是用什么工具壓縮的。一方面,我們可以通過文件后綴名來判定;另一方面,我們還可以使用file命令來判定
-
文件后綴名 .tar.gz 或 .tgz 習慣上代表該tar歸檔文件使用gzip命令進行壓縮 -
文件后綴名 .tar.bz2 習慣上代表該tar歸檔文件使用bzip2命令進行壓縮 -
文件后綴名 .tar.xz 習慣上代表該tar歸檔文件使用xz命令進行壓縮
參考文獻
-
Linux命令行與shell腳本編程大全·第4版 Richard Blum、Christine Bresnahan著
