在Linux操作系統(tǒng)中,有多種壓縮方法,其中比較長(zhǎng)見(jiàn)的有是:compress,bzip2,gzip,zip等等.他們對(duì)應(yīng)的文件后綴如下:
*.z //使用compress方式壓縮產(chǎn)生的文件,不過(guò)這種方式已經(jīng)比較長(zhǎng)用了
*.bz2 //使用bzip2方式壓縮產(chǎn)生的文件
*.gz //使用gzip方式壓縮產(chǎn)生的文件
*.zip //使用zip方式壓縮產(chǎn)生的文件
bzip2
就壓縮的效率來(lái)看,bzip2的壓縮算法是最好的,正常情況下都比gzip的壓縮效果好,壓縮出來(lái)的文件的后綴為: .bz2
bzip2的常用指令選項(xiàng)如下:
基礎(chǔ)格式: bzip2 [Options] file1 file2 file3
指令選項(xiàng):(默認(rèn)功能為壓縮)
-c //將輸出寫(xiě)至標(biāo)準(zhǔn)輸出
-d //進(jìn)行解壓操作
-v //輸出壓縮/解壓的文件名和壓縮比等信息
-k //在壓縮/解壓過(guò)程中保留原文件
-digit //digit部分為數(shù)字(1-9),代表壓縮速度,digit越小,則壓縮速度越快,但壓縮效果越差院促,默認(rèn)為6.
- bzip2 exp1.txt exp2.txt //分別將exp1.txt和exp2.txt壓縮,且不保留原文件.
- bzip2 -dv exp1.bz2 //將exp1.bz2解壓,并顯示壓縮比等信息.
- bzip2 -kd exp1.bz2 //將exp1.bz2解壓,并且原壓縮文件exp1.bz2不會(huì)消失
注:對(duì)應(yīng)于 bzip2,可以使用 bunzip2 進(jìn)行解壓操作,效果類似bunzip2 -d xx,同時(shí)可以使用bzcat讀取壓縮文件的內(nèi)容并顯示在標(biāo)準(zhǔn)輸出,功能類似于 bzip2 -c xx.
gzip
雖然相對(duì)bzip2壓縮來(lái)說(shuō),gzip的效果沒(méi)有那么好,但gzip使用的更加廣泛,比如Apache Tomcat,MySQL,JDK,Redis,Nginx,MongoDB,等等均提供了
gzip的安裝包,但基礎(chǔ)不提供bzip2的包,所以我們?cè)诹私饬薭zip2壓縮后,還是非常有必要了解一下gzip壓縮的,壓縮出來(lái)的文件的后綴為: .gz
gzip不僅可以用于解壓.gz,還可以用于解壓compress等壓縮方式產(chǎn)生的壓縮文件.
其中不帶任何選項(xiàng)和參數(shù)使用gzip或只帶有參數(shù) - 時(shí),gzip從標(biāo)準(zhǔn)輸入讀取輸入,并在標(biāo)準(zhǔn)輸出輸出壓縮結(jié)果.
gzip的常用指令選項(xiàng)如下:
基礎(chǔ)格式: gzip [Options] file1 file2 file3
指令選項(xiàng):(默認(rèn)功能為壓縮)
-c //將輸出寫(xiě)至標(biāo)準(zhǔn)輸出乡小,并保持原文件不變
-d //進(jìn)行解壓操作
-v //輸出壓縮/解壓的文件名和壓縮比等信息
-digit //digit部分為數(shù)字(1-9)礼预,代表壓縮速度塑陵,digit越小,則壓縮速度越快凯傲,但壓縮效果越差,默認(rèn)為6.
注意,使用 gzip 指令壓縮/解壓文件均會(huì)使得源文件消失,即源文件會(huì)被直接解壓/壓縮而不保留備份.
若想要保留原文件可以使用 -c 參數(shù)結(jié)合數(shù)據(jù)流重定向操作(見(jiàn)下例).
- gzip exp1.txt exp2.txt //分別將exp1.txt和exp2.txt壓縮,且不保留原文件.
注意對(duì)于多個(gè)文件參數(shù)是將多個(gè)文件分別進(jìn)行壓縮,而不是壓縮在一起.參考下文 tar 指令. - gzip -dv exp1.gz //將exp1.gz解壓,并顯示壓縮比等信息.
- gzip -cd exp1.gz > exp.1 //將exp1.gz解壓的結(jié)果放置在文件exp.1中,并且原壓縮文件exp1.gz不會(huì)消失
特別注意第三條實(shí)例, -d 指示解壓縮,-c 參數(shù)是將結(jié)果輸出至標(biāo)準(zhǔn)輸出,通過(guò) > 符號(hào),將原本輸出至標(biāo)準(zhǔn)輸出的解壓結(jié)果重定向至exp.1中,既解壓了文件,原壓縮文件也沒(méi)有消失.
注:對(duì)應(yīng)于 gzip,可以使用 gunzip 進(jìn)行解壓操作,效果類似gzip -d xx,同時(shí)可以使用zcat讀取壓縮文件的內(nèi)容并顯示在標(biāo)準(zhǔn)輸出,功能類似于 gzip -c xx.
zip
zip壓縮格式是Windows與Linux等多平臺(tái)通用的壓縮格式,和gzip命令相比,zip命令壓縮文件不僅不會(huì)刪除源文件,而且還可以壓縮目錄.
zip的常用指令選項(xiàng)如下:
基本格式: zip [option] [file]
指令選項(xiàng):
-r //將指定的目錄下的所有文件和子目錄一并壓縮
-x //壓縮文件時(shí)排除某個(gè)文件
-q //不顯示壓縮信息
使用方式:
- zip Text.zip exp.txt //將exp.txt文件壓縮到Text.zip里
- zip Tmp.zip tmp/ //將tmp/目錄壓縮到Tmp.zip里(這樣只壓縮到一個(gè)目錄,目錄下面的文件沒(méi)有壓縮)
- zip -r TMP.zip tmp/ //將tmp/目錄以及子目錄,遞歸壓縮
- zip -r dp-ssh-engine.zip dp-ssh-engine/ -x dp-ssh-engine/nohup.out //排除dp-ssh-engine/nohup.out文件
tar
前面我們已經(jīng)學(xué)習(xí)了 gzip 和 bzip2 帶有多個(gè)文件作為參數(shù)時(shí),執(zhí)行的操作是將各個(gè)文件獨(dú)立壓縮,而不是將其放在一起進(jìn)行壓縮.這樣就無(wú)法產(chǎn)生類似于
Windows環(huán)境下的文件夾打包壓縮的效果.(gzip與bzip2也可以使用文件夾作為參數(shù),使用 -f 選項(xiàng),但也是將其中的每個(gè)文件獨(dú)立壓縮).
為了實(shí)現(xiàn)打包壓縮的效果,可以使用命令 tar 進(jìn)行文件的打包操作,再進(jìn)行壓縮.tar 指令可以將文件打包成文件檔案存儲(chǔ)在磁盤(pán)/磁帶中,
打包操作一般伴隨壓縮操作,也可以使用 tar 指令對(duì)打包壓縮后的文件解壓.
tar 常用命令參數(shù)如下:
基本格式:tar [Options] file_archive //注意tar的第一參數(shù)必須為命令選項(xiàng),即不能直接接待處理文件
常用命令參數(shù):
//指定tar進(jìn)行的操作,以下三個(gè)選項(xiàng)不能出現(xiàn)在同一條命令中
-c //創(chuàng)建一個(gè)新的打包文件(archive)
-x //對(duì)打包文件(archive)進(jìn)行解壓操作
-t //查看打包文件(archive)的內(nèi)容,主要是構(gòu)成打包文件(archive)的文件名
//指定支持的壓縮/解壓方式,操作取決于前面的參數(shù),若為創(chuàng)建(-c),則進(jìn)行壓縮,若為解壓(-x),則進(jìn)行解壓,不加下列參數(shù)時(shí),則為單純的打包操作
-z //使用gzip進(jìn)行壓縮/解壓,一般使用.tar.gz后綴
-j //使用bzip2進(jìn)行壓縮/解壓,一般使用.tar.bz2后綴
//指定tar指令使用的文件,若沒(méi)有壓縮操作,則以.tar作為后綴
-f filename //-f后面接操作使用的文件,用空格隔開(kāi),且中間不能有其他參數(shù),推薦放在參數(shù)集最后或單獨(dú)作為參數(shù)
//文件作用取決于前面的參數(shù),若為創(chuàng)建(-c),則-f后為創(chuàng)建的文件的名字(路徑),若為(-x/t),則-f后為待解壓/查看的打包壓縮文件名
//其他輔助選項(xiàng)
-v //詳細(xì)顯示正在處理的文件名
-C Dir //將解壓文件放置在 -C 指定的目錄下
-p(小寫(xiě)) //保留文件的權(quán)限和屬性,在備份文件時(shí)較有用
-P(大寫(xiě)) //保留原文件的絕對(duì)路徑,即不會(huì)拿掉文件路徑開(kāi)始的根目錄
--exclude=file //排除不進(jìn)行打包的文件
常見(jiàn)的tar指令操作如下:
壓縮:
tar -cvjpf etc.tar.bz2 /etc //-c為創(chuàng)建一個(gè)打包文件,相應(yīng)的-f后面接創(chuàng)建的文件的名稱,使用了.tar.bz2后綴,-j標(biāo)志使用bzip2壓縮,最后面為具體的操作對(duì)象/etc目錄
查看:
tar -tjvf etc.tar.bz2 //-t為查看操作,則-f對(duì)應(yīng)所查看的文件的名稱,文件后綴顯示使用bzip2進(jìn)行壓縮,所以加入-j選項(xiàng),-v會(huì)顯示詳細(xì)的權(quán)限信息
解壓:
tar -xjvf etc.tar.bz2 //-x為解壓操作,則-f指定的是解壓使用的文件,文件后綴顯示使用bzip2進(jìn)行壓縮,所以加入-j選項(xiàng),即使用bzip2解壓
//若只解壓指定打包文件中的一個(gè)文件,在上述指令的最后加上帶解壓文件名作為參數(shù)即可
解壓:
tar -xzvf ect.tar.gz //解壓*.tar.gz壓縮文件.
unzip
unzip 命令與之前的 tar 指令類似,具有對(duì) zip 文件進(jìn)行查看、測(cè)試和解壓的功能.
基本格式:unzip [Options] file[.zip] //不接任何Options時(shí),默認(rèn)將指定的file文件解壓至當(dāng)前文件夾,可同時(shí)接受多個(gè)文件參數(shù)
常用命令參數(shù):
//壓縮文件內(nèi)容查看
-Z //以形如 ls -l 的格式顯示目標(biāo)文件內(nèi)容,實(shí)際原理是命令第一個(gè)參數(shù)為-Z時(shí),其余參數(shù)會(huì)被視為 zipinfo 的參數(shù),并產(chǎn)生對(duì)應(yīng)效果
-Z1 //僅顯示壓縮文件內(nèi)容的文件名,更多顯示可查看 zipinfo 命令的 man 幫助
-l //顯示壓縮文件中包括時(shí)間侠畔、占用空間和文件名等信息,內(nèi)容上較 -Z 更簡(jiǎn)單
//文件測(cè)試
-t //在內(nèi)存中解壓文件并進(jìn)行文件的完整性校驗(yàn)(CRC校驗(yàn))
//解壓縮參數(shù),注意unzip默認(rèn)即為解壓操作
-f //注意與 tar 命令不同,unzip指定 -f 參數(shù)時(shí),則將磁盤(pán)上已經(jīng)存在且內(nèi)容新于對(duì)應(yīng)磁盤(pán)文件的壓縮內(nèi)容解壓出來(lái)
-n //解壓縮時(shí)不覆蓋已存在的文件(而是跳過(guò))
-q //安靜模式,僅解壓縮而不輸出詳細(xì)信息
-d dir //將文件解壓至dir指定的文件夾中
可以使用unzip命令對(duì)zip文件進(jìn)行相關(guān)的操作.
- 查看壓縮文件的所有文件名(注意 -Z 選項(xiàng)表示之后所有的參數(shù)被視為 zipinfo 的參數(shù)并輸出相應(yīng)結(jié)果) -> unzip -Z1 file.zip
- 測(cè)試文件的完整性 -> unzip -t file.zip
- 將文件解壓至當(dāng)前用戶的主目錄 -> unzip -q file.zip -d ~