壓縮和解壓
如果你想要在Linux下遨游,壓縮和解壓縮是必然會(huì)遇到,并且會(huì)經(jīng)常遇到的,所以必須學(xué)會(huì)。
縱觀計(jì)算領(lǐng)域的發(fā)展歷史,人們努力想把最多的數(shù)據(jù)存放到到最小的可用空間中,不管是內(nèi)存,存儲(chǔ)設(shè)備還是網(wǎng)絡(luò)帶寬。
今天我們把許多數(shù)據(jù)服務(wù)都看作是理所當(dāng)然的事情,但是諸如便攜式音樂(lè)播放器,高清電視,或?qū)拵ЬW(wǎng)絡(luò)之類的存在都應(yīng)歸功于高效的數(shù)據(jù)壓縮技術(shù)。
壓縮算法(數(shù)學(xué)技巧被用來(lái)執(zhí)行壓縮任務(wù))分為兩大類,無(wú)損壓縮和有損壓縮。
無(wú)損壓縮保留了原始文件的所有數(shù)據(jù)。這意味著,當(dāng)還原一個(gè)壓縮文件的時(shí)候,還原的文件與原文件一模一樣。
而另一方面,有損壓縮,執(zhí)行壓縮操作時(shí)會(huì)刪除數(shù)據(jù),允許更大的壓縮。
當(dāng)一個(gè)有損文件被還原的時(shí)候,它與原文件不相匹配; 相反,它是一個(gè)近似值。有損壓縮的例子有JPEG(圖像)文件和MP3(音頻)文件。
當(dāng)然,我現(xiàn)在只想了解無(wú)損壓縮。因?yàn)橛?jì)算機(jī)中的大多數(shù)數(shù)據(jù)是不能容忍丟失任何數(shù)據(jù)的。
gzip
- gzip 程序被用來(lái)壓縮一個(gè)或多個(gè)文件。當(dāng)執(zhí)行g(shù)zip 命令時(shí),則原始文件的壓縮版會(huì)替代原始文件。
- 相對(duì)應(yīng)的gunzip 程序被用來(lái)把壓縮文件復(fù)原為沒(méi)有被壓縮的版本。
- 使用gzip -rv ~/test,是分別壓縮test目錄下的每個(gè)文件,而不是壓縮test目錄。
- 壓縮文件后綴是.gz。
注意:只能壓縮文件,可一次性壓縮很多文件。
bzip2
- bzip2 程序與gzip 程序相似,但是使用了不同的壓縮算法,舍棄了壓縮速度,而實(shí)現(xiàn)了更高的壓縮級(jí)別。
- 在大多數(shù)情況下,它的工作模式等同于gzip。
- 壓縮文件后綴是.bz2。
注意:只能壓縮文件,并且只能壓縮單個(gè)文件,因?yàn)楹蚲zip相比,缺少了-r參數(shù)。
tar
- 與文件壓縮結(jié)合一塊使用的文件管理任務(wù)是歸檔。
- 歸檔就是收集許多文件,并把它們捆綁成一個(gè)大文件的過(guò)程。
- tar 程序是用來(lái)歸檔文件的經(jīng)典工具。它的名字,是tape archive 的簡(jiǎn)稱,揭示了它的根源,它是一款制作磁帶備份的工具。
- 而它仍然被用來(lái)完成傳統(tǒng)任務(wù),它也同樣適用于其它的存儲(chǔ)設(shè)備。
- 我們經(jīng)常看到擴(kuò)展名為.tar 或者.tar.gz 的文件,它們各自表示“普通”的tar 包和被gzip 程序壓縮過(guò)的tar 包。
注意:歸檔只是把許多文件捆綁成一個(gè)大文件,它并不壓縮文件,只是為了給壓縮文件做準(zhǔn)備。