2021-05-12 14:32:11
如何在 Linux 中壓縮和解壓縮檔案
當在備份重要檔案和通過網路傳送大檔案的時候,對檔案進行壓縮非常有用。請注意,壓縮一個已經壓縮過的檔案會增加額外開銷,因此你將會得到一個更大一些的檔案。所以,請不要壓縮已經壓縮過的檔案。在 GNU/Linux 中,有許多程式可以用來壓縮和解壓縮檔案。在這篇教學中,我們僅學習其中兩個應用程式。
在類 Unix 系統中,最常見的用來壓縮檔案的程式是:
- gzip
- bzip2
1. 使用 gzip 程式來壓縮和解壓縮檔案
gzip
是一個使用 Lempel-Ziv 編碼(LZ77)演算法來壓縮和解壓縮檔案的實用工具。
1.1 壓縮檔案
如果要壓縮一個名為 ostechnix.txt
的檔案,使之成為 gzip 格式的壓縮檔案,那麼只需執行如下命令:
$ gzip ostechnix.txt
上面的命令執行結束之後,將會出現一個名為 ostechnix.txt.gz
的 gzip 格式壓縮檔案,代替了原始的 ostechnix.txt
檔案。
gzip
命令還可以有其他用法。一個有趣的例子是,我們可以將一個特定命令的輸出通過管道傳遞,然後作為 gzip
程式的輸入來建立一個壓縮檔案。看下面的命令:
$ ls-l Downloads/| gzip > ostechnix.txt.gz
上面的命令將會建立一個 gzip 格式的壓縮檔案,檔案的內容為 Downloads
目錄的目錄項。
1.2 壓縮檔案並將輸出寫到新檔案中(不覆蓋原始檔案)
預設情況下,gzip
程式會壓縮給定檔案,並以壓縮檔案替代原始檔案。但是,你也可以保留原始檔案,並將輸出寫到標準輸出。比如,下面這個命令將會壓縮 ostechnix.txt
檔案,並將輸出寫入檔案 output.txt.gz
。
$ gzip -c ostechnix.txt > output.txt.gz
類似地,要解壓縮一個 gzip
格式的壓縮檔案並指定輸出檔案的檔名,只需執行:
$ gzip -c -d output.txt.gz > ostechnix1.txt
上面的命令將會解壓縮 output.txt.gz
檔案,並將輸出寫入到檔案 ostechnix1.txt
中。在上面兩個例子中,原始檔案均不會被刪除。
1.3 解壓縮檔案
如果要解壓縮 ostechnix.txt.gz
檔案,並以原始未壓縮版本的檔案來代替它,那麼只需執行:
$ gzip -d ostechnix.txt.gz
我們也可以使用 gunzip
程式來解壓縮檔案:
$ gunzip ostechnix.txt.gz
1.4 在不解壓縮的情況下檢視壓縮檔案的內容
如果你想在不解壓縮的情況下,使用 gzip
程式檢視壓縮檔案的內容,那麼可以像下面這樣使用 -c
選項:
$ gunzip -c ostechnix1.txt.gz
或者,你也可以像下面這樣使用 zcat
程式:
$ zcat ostechnix.txt.gz
你也可以通過管道將輸出傳遞給 less
命令,從而一頁一頁的來檢視輸出,就像下面這樣:
$ gunzip -c ostechnix1.txt.gz |less
$ zcat ostechnix.txt.gz |less
另外,zless
程式也能夠實現和上面的管道同樣的功能。
$ zless ostechnix1.txt.gz
1.5 使用 gzip 壓縮檔案並指定壓縮級別
gzip
的另外一個顯著優點是支援壓縮級別。它支援下面給出的 3 個壓縮級別:
- 1 – 最快 (最差)
- 9 – 最慢 (最好)
- 6 – 預設級別
要壓縮名為 ostechnix.txt
的檔案,使之成為“最好”壓縮級別的 gzip 壓縮檔案,可以執行:
$ gzip -9 ostechnix.txt
1.6 連線多個壓縮檔案
我們也可以把多個需要壓縮的檔案壓縮到同一個檔案中。如何實現呢?看下面這個例子。
$ gzip -c ostechnix1.txt > output.txt.gz
$ gzip -c ostechnix2.txt >> output.txt.gz
上面的兩個命令將會壓縮檔案 ostechnix1.txt
和 ostechnix2.txt
,並將輸出儲存到一個檔案 output.txt.gz
中。
你可以通過下面其中任何一個命令,在不解壓縮的情況下,檢視兩個檔案 ostechnix1.txt
和 ostechnix2.txt
的內容:
$ gunzip -c output.txt.gz
$ gunzip -c output.txt
$ zcat output.txt.gz
$ zcat output.txt
如果你想了解關於 gzip
的更多細節,請參閱它的 man 手冊。
$ man gzip
2. 使用 bzip2 程式來壓縮和解壓縮檔案
bzip2
和 gzip
非常類似,但是 bzip2
使用的是 Burrows-Wheeler 塊排序壓縮演算法,並使用哈夫曼Huffman編碼。使用 bzip2
壓縮的檔案以 “.bz2” 擴充套件結尾。
正如我上面所說的, bzip2
的用法和 gzip
幾乎完全相同。只需在上面的例子中將 gzip
換成 bzip2
,將 gunzip
換成 bunzip2
,將 zcat
換成 bzcat
即可。
要使用 bzip2
壓縮一個檔案,並以壓縮後的檔案取而代之,只需執行:
$ bzip2 ostechnix.txt
如果你不想替換原始檔案,那麼可以使用 -c
選項,並把輸出寫入到新檔案中。
$ bzip2 -c ostechnix.txt > output.txt.bz2
如果要解壓縮檔案,則執行:
$ bzip2 -d ostechnix.txt.bz2
或者,
$ bunzip2 ostechnix.txt.bz2
如果要在不解壓縮的情況下檢視一個壓縮檔案的內容,則執行:
$ bunzip2 -c ostechnix.txt.bz2
或者,
$ bzcat ostechnix.txt.bz2
如果你想了解關於 bzip2
的更多細節,請參閱它的 man 手冊。
$ man bzip2
總結
在這篇教學中,我們學習了 gzip
和 bzip2
程式是什麼,並通過 GNU/Linux 下的一些例子學習了如何使用它們來壓縮和解壓縮檔案。接下來,我們將要學習如何在 Linux 中將檔案和目錄歸檔。
乾杯!
via: https://www.ostechnix.com/how-to-compress-and-decompress-files-in-linux/
作者:SK 選題:lujun9972 譯者:ucasFL 校對:wxy
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-09/154096.htm
相關文章