如何在Linux中壓縮和解壓縮文件
當(dāng)在備份重要文件和通過(guò)網(wǎng)絡(luò)發(fā)送大文件的時(shí)候,對(duì)文件進(jìn)行壓縮非常有用。請(qǐng)注意,壓縮一個(gè)已經(jīng)壓縮過(guò)的文件會(huì)增加額外開(kāi)銷(xiāo),因此你將會(huì)得到一個(gè)更大一些的文件。所以,請(qǐng)不要壓縮已經(jīng)壓縮過(guò)的文件。在 GNU/Linux 中,有許多程序可以用來(lái)壓縮和解壓縮文件。在這篇教程中,我們僅學(xué)習(xí)其中兩個(gè)應(yīng)用程序。
在類(lèi) Unix 系統(tǒng)中,最常見(jiàn)的用來(lái)壓縮文件的程序是:
- gzip
 - bzip2
 
1. 使用 gzip 程序來(lái)壓縮和解壓縮文件
gzip 是一個(gè)使用 Lempel-Ziv 編碼(LZ77)算法來(lái)壓縮和解壓縮文件的實(shí)用工具。
1.1 壓縮文件
如果要壓縮一個(gè)名為 ostechnix.txt 的文件,使之成為 gzip 格式的壓縮文件,那么只需運(yùn)行如下命令:
$ gzip ostechnix.txt
上面的命令運(yùn)行結(jié)束之后,將會(huì)出現(xiàn)一個(gè)名為 ostechnix.txt.gz 的 gzip 格式壓縮文件,代替了原始的 ostechnix.txt 文件。
gzip 命令還可以有其他用法。一個(gè)有趣的例子是,我們可以將一個(gè)特定命令的輸出通過(guò)管道傳遞,然后作為 gzip 程序的輸入來(lái)創(chuàng)建一個(gè)壓縮文件??聪旅娴拿睿?/p>
$ ls -l Downloads/ | gzip > ostechnix.txt.gz
上面的命令將會(huì)創(chuàng)建一個(gè) gzip 格式的壓縮文件,文件的內(nèi)容為 Downloads 目錄的目錄項(xiàng)。
1.2 壓縮文件并將輸出寫(xiě)到新文件中(不覆蓋原始文件)
默認(rèn)情況下,gzip 程序會(huì)壓縮給定文件,并以壓縮文件替代原始文件。但是,你也可以保留原始文件,并將輸出寫(xiě)到標(biāo)準(zhǔn)輸出。比如,下面這個(gè)命令將會(huì)壓縮 ostechnix.txt 文件,并將輸出寫(xiě)入文件 output.txt.gz。
$ gzip -c ostechnix.txt > output.txt.gz
類(lèi)似地,要解壓縮一個(gè) gzip 格式的壓縮文件并指定輸出文件的文件名,只需運(yùn)行:
$ gzip -c -d output.txt.gz > ostechnix1.txt
上面的命令將會(huì)解壓縮 output.txt.gz 文件,并將輸出寫(xiě)入到文件 ostechnix1.txt 中。在上面兩個(gè)例子中,原始文件均不會(huì)被刪除。
1.3 解壓縮文件
如果要解壓縮 ostechnix.txt.gz 文件,并以原始未壓縮版本的文件來(lái)代替它,那么只需運(yùn)行:
$ gzip -d ostechnix.txt.gz
我們也可以使用 gunzip 程序來(lái)解壓縮文件:
$ gunzip ostechnix.txt.gz
1.4 在不解壓縮的情況下查看壓縮文件的內(nèi)容
如果你想在不解壓縮的情況下,使用 gzip 程序查看壓縮文件的內(nèi)容,那么可以像下面這樣使用 -c 選項(xiàng):
$ gunzip -c ostechnix1.txt.gz
或者,你也可以像下面這樣使用 zcat 程序:
$ zcat ostechnix.txt.gz
你也可以通過(guò)管道將輸出傳遞給 less 命令,從而一頁(yè)一頁(yè)的來(lái)查看輸出,就像下面這樣:
$ gunzip -c ostechnix1.txt.gz | less$ zcat ostechnix.txt.gz | less
另外,zless 程序也能夠?qū)崿F(xiàn)和上面的管道同樣的功能。
$ zless ostechnix1.txt.gz
1.5 使用 gzip 壓縮文件并指定壓縮級(jí)別
gzip 的另外一個(gè)顯著優(yōu)點(diǎn)是支持壓縮級(jí)別。它支持下面給出的 3 個(gè)壓縮級(jí)別:
- 1 – 最快 (最差)
 - 9 – 最慢 (***)
 - 6 – 默認(rèn)級(jí)別
 
要壓縮名為 ostechnix.txt 的文件,使之成為“***”壓縮級(jí)別的 gzip 壓縮文件,可以運(yùn)行:
$ gzip -9 ostechnix.txt
1.6 連接多個(gè)壓縮文件
我們也可以把多個(gè)需要壓縮的文件壓縮到同一個(gè)文件中。如何實(shí)現(xiàn)呢?看下面這個(gè)例子。
$ gzip -c ostechnix1.txt > output.txt.gz$ gzip -c ostechnix2.txt >> output.txt.gz
上面的兩個(gè)命令將會(huì)壓縮文件 ostechnix1.txt 和 ostechnix2.txt,并將輸出保存到一個(gè)文件 output.txt.gz 中。
你可以通過(guò)下面其中任何一個(gè)命令,在不解壓縮的情況下,查看兩個(gè)文件 ostechnix1.txt 和 ostechnix2.txt 的內(nèi)容:
$ gunzip -c output.txt.gz$ gunzip -c output.txt$ zcat output.txt.gz$ zcat output.txt
如果你想了解關(guān)于 gzip 的更多細(xì)節(jié),請(qǐng)參閱它的 man 手冊(cè)。
$ man gzip
2. 使用 bzip2 程序來(lái)壓縮和解壓縮文件
bzip2 和 gzip 非常類(lèi)似,但是 bzip2 使用的是 Burrows-Wheeler 塊排序壓縮算法,并使用哈夫曼編碼。使用 bzip2 壓縮的文件以 “.bz2” 擴(kuò)展結(jié)尾。
正如我上面所說(shuō)的, bzip2 的用法和 gzip 幾乎完全相同。只需在上面的例子中將 gzip 換成 bzip2,將 gunzip 換成 bunzip2,將 zcat 換成 bzcat 即可。
要使用 bzip2 壓縮一個(gè)文件,并以壓縮后的文件取而代之,只需運(yùn)行:
$ bzip2 ostechnix.txt
如果你不想替換原始文件,那么可以使用 -c 選項(xiàng),并把輸出寫(xiě)入到新文件中。
$ bzip2 -c ostechnix.txt > output.txt.bz2
如果要解壓縮文件,則運(yùn)行:
$ bzip2 -d ostechnix.txt.bz2
或者,
$ bunzip2 ostechnix.txt.bz2
如果要在不解壓縮的情況下查看一個(gè)壓縮文件的內(nèi)容,則運(yùn)行:
$ bunzip2 -c ostechnix.txt.bz2
或者,
$ bzcat ostechnix.txt.bz2
如果你想了解關(guān)于 bzip2 的更多細(xì)節(jié),請(qǐng)參閱它的 man 手冊(cè)。
$ man bzip2
總結(jié)
在這篇教程中,我們學(xué)習(xí)了 gzip 和 bzip2 程序是什么,并通過(guò) GNU/Linux 下的一些例子學(xué)習(xí)了如何使用它們來(lái)壓縮和解壓縮文件。接下來(lái),我們將要學(xué)習(xí)如何在 Linux 中將文件和目錄歸檔。 















 
 
 






 
 
 
 