本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
linux中壓縮是什么
壓縮是指利用算法將文件進(jìn)行處理,已達(dá)到保留最大文件信息,而讓文件體積變小的目的。其基本原理為,通過查找文件內(nèi)的重復(fù)字節(jié),建立一個相同字節(jié)的詞典文件,并用一個代碼表示。
【資料圖】
壓縮和歸檔文件類似,壓縮文件也是一個文件和目錄的集合,且這個集合也被存儲在一個文件中,但它們的不同之處在于,壓縮文件采用了不同的存儲方式,使其所占用的磁盤空間比集合中所有文件大小的總和要小。
由于計算機(jī)處理的信息是以二進(jìn)制的形式表示的,因此,壓縮軟件就是把二進(jìn)制信息中相同的字符串以特殊字符標(biāo)記,只要通過合理的數(shù)學(xué)計算,文件的體積就能夠被大大壓縮。把一個或者多個文件用壓縮軟件進(jìn)行壓縮,形成一個文件壓縮包,既可以節(jié)省存儲空間,有方便在網(wǎng)絡(luò)上傳送。
對文件進(jìn)行壓縮,很可能損壞文件中的內(nèi)容,因此,壓縮又可以分為有損壓縮和無損壓縮。無損壓縮很好理解,指的是壓縮數(shù)據(jù)必須準(zhǔn)確無誤;有損壓縮指的是即便丟失個別的數(shù)據(jù),對文件也不會造成太大的影響。有損壓縮廣泛應(yīng)用于動畫、聲音和圖像文件中,典型代表就是影碟文件格式 mpeg、音樂文件格式 mp3 以及圖像文件格式 jpg。
采用壓縮工具對文件進(jìn)行壓縮,生成的文件稱為壓縮包,該文件的體積通常只有原文件的一半甚至更小。需要注意的是,壓縮包中的數(shù)據(jù)無法直接使用,使用前需要利用壓縮工具將文件數(shù)據(jù)還原,此過程又稱解壓縮。
linux壓縮命令
常用的壓縮命令有很多,比如 gzip、 zip、 bzip2 。
tar壓縮命令
tar命令不是專門的壓縮命令。它通常用于將多個文件拉入一個單個的文件中,以便容易地傳輸?shù)搅硪粋€系統(tǒng),或者將文件作為一個相關(guān)的組進(jìn)行備份。它也提供壓縮的功能,這就很有意義了,附加一個 z壓縮選項能夠?qū)崿F(xiàn)壓縮文件。
當(dāng)使用 z選項為 tar命令附加壓縮過程時,tar使用 gzip來進(jìn)行壓縮。
就像壓縮一組文件一樣,你可以使用 tar來壓縮單個文件,盡管這種操作與直接使用 gzip相比沒有特別的優(yōu)勢。要使用 tar這樣做,只需要使用 tar cfz newtarfile filename命令來標(biāo)識要壓縮的文件,就像標(biāo)識一組文件一樣,像這樣:
$ tar cfz bigfile.tgz bigfile ^ ^ | | +- 新的文件 +- 將被壓縮的文件$ ls -l bigfile*-rw-rw-r-- 1 shs shs 103270400 Apr 16 16:09 bigfile-rw-rw-r-- 1 shs shs 21608325 Apr 16 16:08 bigfile.tgz
注意,文件的大小顯著減少了。
如果你愿意,你可以使用 tar.gz擴(kuò)展名,這可能會使文件的特征更加明顯,但是大多數(shù)的 Linux 用戶將很可能會意識到與 tgz的意思是一樣的 – tar和 gz的組合來顯示文件是一個壓縮的 tar 文件。在壓縮完成后,你將同時得到原始文件和壓縮文件。
要將很多文件收集在一起并在一個命令中壓縮出 “tar ball”,使用相同的語法,但要指定要包含的文件為一組,而不是單個文件。這里有一個示例:
$ tar cfz bin.tgz bin/* ^ ^ | +-- 將被包含的文件 + 新的文件
zip壓縮命令
zip命令創(chuàng)建一個壓縮文件,與此同時保留原始文件的完整性。語法像使用 tar一樣簡單,只是你必需記住,你的原始文件名稱應(yīng)該是命令行上的最后一個參數(shù)。
$ zip ./bigfile.zip bigfileupdating: bigfile (deflated 79%)$ ls -l bigfile bigfile.zip-rw-rw-r-- 1 shs shs 103270400 Apr 16 11:18 bigfile-rw-rw-r-- 1 shs shs 21606889 Apr 16 11:19 bigfile.zip
gzip壓縮命令
gzip命令非常容易使用。你只需要鍵入 gzip,緊隨其后的是你想要壓縮的文件名稱。不像上述描述的命令,gzip將“就地”“加密”文件。換句話說,原始文件將被“加密”文件替換。
$ gzip bigfile$ ls -l bigfile*-rw-rw-r-- 1 shs shs 21606751 Apr 15 17:57 bigfile.gz
bzip2壓縮命令
像使用 gzip命令一樣,bzip2將在你選擇的文件“就地”壓縮,不留下原始文件。
$ bzip bigfile$ ls -l bigfile*-rw-rw-r-- 1 shs shs 18115234 Apr 15 17:57 bigfile.bz2
xz壓縮命令
xz是壓縮命令團(tuán)隊中的一個相對較新的成員,在壓縮文件的能力方面,它是一個領(lǐng)跑者。像先前的兩個命令一樣,你只需要將文件名稱提供給命令。再強(qiáng)調(diào)一次,原始文件被就地壓縮。
$ xz bigfile$ ls -l bigfile*-rw-rw-r-- 1 shs shs 13427236 Apr 15 17:30 bigfile.xz
對于大文件來說,你可能會注意到 xz將比其它的壓縮命令花費(fèi)更多的運(yùn)行時間,但是壓縮的結(jié)果卻是非常令人贊嘆的。
壓縮命令對比
大多數(shù)人都聽說過“大小不是一切”。所以,讓我們比較一下文件大小以及一些當(dāng)你計劃如何壓縮文件時的問題。
下面顯示的統(tǒng)計數(shù)據(jù)都與壓縮單個文件相關(guān),在上面顯示的示例中使用 bigfile。這個文件是一個大的且相當(dāng)隨機(jī)的文本文件。壓縮率在一定程度上取決于文件的內(nèi)容。
大小減縮率
當(dāng)比較時,上面顯示的各種壓縮命產(chǎn)生下面的結(jié)果。百分比表示壓縮文件與原始文件的比較效果。
-rw-rw-r-- 1 shs shs 103270400 Apr 16 14:01 bigfile-------------------------------------------------------rw-rw-r-- 1 shs shs 18115234 Apr 16 13:59 bigfile.bz2 ~17%-rw-rw-r-- 1 shs shs 21606751 Apr 16 14:00 bigfile.gz ~21%-rw-rw-r-- 1 shs shs 21608322 Apr 16 13:59 bigfile.tgz ~21%-rw-rw-r-- 1 shs shs 13427236 Apr 16 14:00 bigfile.xz ~13%-rw-rw-r-- 1 shs shs 21606889 Apr 16 13:59 bigfile.zip ~21%
xz命令獲勝,最終只有壓縮文件 13% 的大小,但是所有這些壓縮命令都相當(dāng)顯著地減少原始文件的大小。
是否替換原始文件
bzip2、gzip和 xz命令都用壓縮文件替換原始文件。tar和 zip命令不替換。
運(yùn)行時間
xz命令似乎比其它命令需要花費(fèi)更多的時間來“加密”文件。對于 bigfile來說,大概的時間是:
命令 運(yùn)行時間tar 4.9 秒zip 5.2 秒bzip2 22.8 秒gzip 4.8 秒xz 50.4 秒
解壓縮文件很可能比壓縮時間要短得多。
文件權(quán)限
不管你對壓縮文件設(shè)置什么權(quán)限,壓縮文件的權(quán)限將基于你的 umask設(shè)置,但 bzip2除外,它保留了原始文件的權(quán)限。
與 Windows 的兼容性
zip命令創(chuàng)建的文件可以在 Windows 系統(tǒng)以及 Linux 和其他 Unix 系統(tǒng)上使用(即解壓),而無需安裝其他工具,無論這些工具可能是可用還是不可用的。
相關(guān)推薦:《Linux視頻教程》
以上就是linux壓縮命令有哪些的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
關(guān)鍵詞: linux