Linux第六節文件打包與解壓縮

一、概念講解

Windows 上最常見的是三種以.zip,.rar,.7z 為后綴的壓縮文件,而在 Linux 上常見常用的除了以上三種外,還有.gz,.xz,.bz2,.tar,.tar.gz,.tar.xz,tar.bz2,簡單介紹如下:

文件后綴名? 說明

.zip zip 程序打包壓縮的文件

.rar rar 程序壓縮的文件

.7z 7zip 程序壓縮的文件

.tar tar 程序打包,未壓縮的文件

.gz gzip 程序(GNU zip)壓縮的文件

.xz xz 程序壓縮的文件

.bz2 bzip2 程序壓縮的文件

.tar.gz tar 打包,gzip 程序壓縮的文件

.tar.xz tar 打包,xz 程序壓縮的文件

tar.bz2 tar 打包,bzip2 程序壓縮的文件

.tar.7z tar 打包,7z 程序壓縮的文件

一般只需要掌握 zip,rar,tar即可。

二、實戰

2.1 zip 壓縮打包程序

?使用 zip 打包文件夾:

$ zip -r -q -o shiyanlou.zip /home/shiyanlou

$ du -h shiyanlou.zip

$ file shiyanlou.zip

上面命令將 shiyanlou 的 home 目錄打包成一個文件,并查看了打包后文件的大小和類型。第一行命令中,-r 參數表示遞歸打包包含子目錄的全部內容,-q 參數表示為安靜模式,即不向屏幕輸出信息,-o,表示輸出文件,需在其后緊跟打包輸出文件名。du 命令查看打包后文件的大小。

?設置壓縮級別為 9 和 1(9 最大,1 最小),重新打包:

$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/.zip

$ zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/.zip

這里添加了一個參數用于設置壓縮級別 -[1-9],1 表示最快壓縮但體積大,9 表示體積最小但耗時最久。-x 是為了排除上一次創建的 zip 文件,否則又會被打包進這一次的壓縮文件中,注意:這里只能使用絕對路徑,否則不起作用。

用 du 命令分別查看默認壓縮級別、最低、最高壓縮級別及未壓縮的文件的大小:

$ du -h -d 0 .zip ~ | sort

man 手冊可知:

?h, --human-readable

?d, --max-depth(所查看文件的深度)

默認壓縮級別是最高的,效果很明顯,每個用戶在環境中操作之后看到的壓縮文件大小可能會不同,因為系統在使用過程中,會隨時生成一些緩存文件在當前用戶的家目錄中,可以忽略這些不同。

?創建加密 zip 包

使用 -e 參數可以創建加密壓縮包:

$ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou

注意: 關于 zip 命令,因為 Windows 系統與 Linux/Unix 在文本文件格式上的一些兼容問題,比如換行符(為不可見字符),在 Windows 為 CR+LF(Carriage-Return+Line-Feed:回車加換行),而在 Linux/Unix 上為 LF(換行),所以如果在不加處理的情況下,在 Linux 上編輯的文本,在 Windows 系統上打開可能看起來是沒有換行的。如果想讓在 Linux 創建的 zip 壓縮文件在 Windows 上解壓后沒有任何問題,那么還需要對命令做一些修改:

$ zip -r -l -o shiyanlou.zip /home/shiyanlou

需要加上 -l 參數將 LF 轉換為 CR+LF 來達到以上目的。

2.2 使用 unzip 命令解壓縮 zip 文件

將 shiyanlou.zip 解壓到當前目錄:

$ unzip shiyanlou.zip

使用安靜模式,將文件解壓到指定目錄:

$ unzip -q shiyanlou.zip -d ziptest

上述指定目錄不存在將會自動創建。如果不想解壓只想查看壓縮包的內容可以使用 -l 參數:

$ unzip -l shiyanlou.zip

注意: 使用 unzip 解壓文件時同樣應該注意兼容問題,不過這里是中文編碼的問題,通常 Windows 系統上面創建的壓縮文件,如果有有包含中文的文檔或以中文作為文件名的文件時默認會采用 GBK 或其它編碼,而 Linux 上面默認使用的是 UTF-8 編碼,如果不加任何處理,直接解壓的話可能會出現中文亂碼的問題(有時候會自動處理),為了解決這個問題,可以在解壓時指定編碼類型。

使用 -O(英文字母,大寫 o)參數指定編碼類型:

unzip -O GBK 中文壓縮文件.zip

2.3 rar 打包壓縮命令

rar 也是 Windows 上常用的一種壓縮文件格式,在 Linux 上可以使用 rar 和 unrar 工具分別創建和解壓 rar 壓縮包。

?安裝 rar 和 unrar 工具:

$ sudo apt-get update

$ sudo apt-get install rar unrar

?從指定文件或目錄創建壓縮包或添加文件到壓縮包:

$ rm *.zip

$ rar a shiyanlou.rar .

上面的命令使用 a 參數添加一個目錄 ~ 到一個歸檔文件中,如果該文件不存在就會自動創建。

注意:rar 的命令參數沒有 -,如果加上會報錯。

?從指定壓縮包文件中刪除某個文件:

$ rar d shiyanlou.rar .zshrc

?查看不解壓文件:

$ rar l shiyanlou.rar

?使用 unrar 解壓 rar 文件

全路徑解壓:

$ unrar x shiyanlou.rar

去掉路徑解壓:

$ mkdir tmp

$ unrar e shiyanlou.rar tmp/

rar 命令參數非常多,上面只涉及了一些基本操作。

2.4 tar 打包工具

在 Linux 上面更常用的是 tar 工具,tar 原本只是一個打包工具,只是同時還是實現了對 7z、gzip、xz、bzip2 等工具的支持,這些壓縮工具本身只能實現對文件或目錄(單獨壓縮目錄中的文件)的壓縮,沒有實現對文件的打包壓縮,所以無需再單獨去學習其他幾個工具,tar 的解壓和壓縮都是同一個命令,只需參數不同,使用比較方便。

tar 命令一些基本的使用方式,即不進行壓縮只是進行打包(創建歸檔文件)和解包的操作。

?創建一個 tar 包:

$ tar -cf shiyanlou.tar ~

上面命令中,-c 表示創建一個 tar 包文件,-f 用于指定創建的文件名,注意文件名必須緊跟在 -f 參數之后,比如不能寫成 tar -fc shiyanlou.tar,可以寫成 tar -f shiyanlou.tar -c ~。你還可以加上 -v 參數以可視的的方式輸出打包的文件。上面會自動去掉表示絕對路徑的 /,你也可以使用 -P 保留絕對路徑符。

?解包一個文件(-x 參數)到指定路徑的已存在目錄(-C 參數):

$ mkdir tardir

$ tar -xf shiyanlou.tar -C tardir

?只查看不解包文件 -t 參數:

$ tar -tf shiyanlou.tar

?保留文件屬性和跟隨鏈接(符號鏈接或軟鏈接),有時候使用 tar 備份文件當在其他主機還原時希望保留文件的屬性(-p 參數)和備份鏈接指向的源文件而不是鏈接本身(-h 參數):

$ tar -cphf etc.tar /etc

對于創建不同的壓縮格式的文件,對于 tar 來說是相當簡單的,需要的只是換一個參數,這里使用 gzip 工具創建.tar.gz 文件為例來說明。

?只需要在創建 tar 文件的基礎上添加 -z 參數,使用 gzip 來壓縮文件:

$ tar -czf shiyanlou.tar.gz ~

?解壓 .tar.gz 文件:

$ tar -xzf shiyanlou.tar.gz

現在我們要其它的壓縮工具創建或解壓相應文件只需要更改一個參數即可:

壓縮文件格式? 參數

.tar.gz -z

.tar.xz -J

*tar.bz2 -j

需要了解更多可以查看 man 手冊獲取幫助。

三、總結

常用命令:

?zip:?打包 :zip something.zip something (目錄請加 -r 參數)

?解包:unzip something

?指定路徑:-d 參數

?tar:?打包:tar -zcvf something.tar something

?解包:tar -zxvf something.tar

?指定路徑:-C 參數

四、火爐

$ sudo apt-get install libaa-bin

(提示 command not found ,請自行解決)

$ aafire

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容