歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 文件打包與壓縮

文件打包與壓縮

日期:2017/3/3 14:13:31   编辑:Linux技術

知識點

Linux 上常用的 壓縮/解壓 工具,介紹了 zip,rar,tar 的使用。

文件打包和解壓縮

1.zip壓縮打包程序

使用zip打包文件夾:

[code]$ zip -r -q -o jly.zip /home/jly
$ du -h jly.zip
$ file jly.zip
上面命令將 jly的 home 目錄打包成一個文件,並查看了打包後文件的大小和類型。第一行命令中,-r參數表示遞歸打包包含子目錄的全部內容,-q參數表示為安靜模式,即不向屏幕輸出信息,-o,表示輸出文件,需在其後緊跟打包輸出文件名。後面使用du命令查看打包後文件的大小(後面會具體說明該命令)。

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

[code]$ zip -r -9 -q -o jly_9.zip /home/jly -x ~/*.zip
$ zip -r -1 -q -o jly_1.zip /home/jly -x ~/*.zip
這裡添加了一個參數用於設置壓縮級別-[1-9],1表示最快壓縮但體積大,9表示體積最小但耗時最久。最後那個-x是為了排除我們上一次創建的 zip 文件,否則又會被打包進這一次的壓縮文件中,注意:這裡只能使用絕對路徑,否則不起作用。我們再用du命令分別查看默認壓縮級別、最低、最高壓縮級別及未壓縮的文件的大小:

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

[code]$ zip -r -l -o jly.zip /home/jly
需要加上-l參數將LF轉換為CR+LF來達到以上目的。

2.使用unzip命令解壓縮zip文件

使用安靜模式,將文件解壓到指定目錄:
[code]$ unzip -q shiyanlou.zip -d ziptest

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

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

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

[code]unzip -O GBK 中文壓縮文件.zip

3.rar打包壓縮命令

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

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

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

[code]$ rar d jly.rar .zshrc
查看不解壓文件

[code]$ rar l jly.rar
使用unrar解壓rar文件

全路徑解壓

[code]$ unrar x jly.rar
去掉路徑解壓:

[code]$ mkdir tmp
$ unrar e jly.rar tmp/

4.tar打包工具

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

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

創建一個 tar 包:

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

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

[code]$ mkdir tardir
$ tar -xf jly.tar -C tardir
只查看不解包文件-t參數:

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

[code]$ tar -cphf etc.tar /etc
對於創建不同的壓縮格式的文件,對於tar來說是相當簡單的,需要的只是換一個參數,這裡我們就以使用gzip工具創建*.tar.gz文件為例來說明。

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

[code]$ tar -czf jly.tar.gz ~
解壓*.tar.gz文件:

[code]$ tar -xzf jly.tar.gz

Copyright © Linux教程網 All Rights Reserved