說明:
本文轉(zhuǎn)載自Linux常見壓縮格式Tar只锭、Zip和Gz格式之不同
為方便統(tǒng)一管理自己學習知識體系著恩,所以將博文載入。
Tar纹烹、Zip和Gz格式的不同
Tar页滚、Zip 和 Gz 之間的不同用最為簡潔的描述來說可歸納為:
- .tar 未壓縮的歸檔文件
- .zip (通常)壓縮歸檔文件
- .gz 使用gzip壓縮的文件(歸檔或不歸檔)
存檔文件的歷史
與 Unix 和類 Unix 系統(tǒng)一樣,故事開始于很久之前的七十年代铺呵。1979 年 1 月的一個清晨裹驰,Tar 實用程序首次作為 Unix V7 的一部分正式面世。Tar 程序當時主要被設計為往磁帶上批量高效寫入文件的一種方式∑遥現(xiàn)在幻林,雖然現(xiàn)在大多數(shù) Linux 用戶都已經(jīng)不知道磁帶驅(qū)動器是什么鬼了,但 tarballs(tar 的昵稱)仍被常用于將多個文件甚至整個目錄樹打包到單一文件當中音念。
需要 Linux/Unix 用戶注意的是沪饺,普通的 tar 格式文檔只進行歸檔操作而不進行壓縮。換句話說就是闷愤,如果你 tar 100 個 50kb 的文件得到的 tar 歸檔文件大小應該為 5000kb 左右整葡。
使用 Tar 進行文件歸檔的唯一好處就是減少某種粒度磁盤空間的分配抡柿。(例如在簇大小為 4kb 的磁盤上 1 字節(jié)的文件也要占用 4kb 磁盤空間蒋得,若有 1000 個 1 字節(jié)的文件分散在此磁盤上的話端盆,則會占用 4MB 大小拜马,而使用 Tar 歸檔之后則只占用 1MB 左右大小流昏。)
值得一提的是迫吐,tar 并非 Linux/Unix 中創(chuàng)建歸檔文件的唯一方式宰缤。程序員朋友應該知道 ar痊剖,它大多情況下主要用于創(chuàng)建靜態(tài)庫告丢,實際它也是可用來創(chuàng)建其它種類歸檔的枪蘑,例如 Debian 系統(tǒng)中使用的 .deb 包文件就是 ar 存檔。而 macOS 的 mpkg 包是使用 gzip 壓縮的 cpio 檔岖免。不過 ar 和 cpio 用起來不像 Tar 這樣友好岳颇、簡單,所以 tar 的受歡迎程度更高觅捆,普及更廣赦役。
雖然歸檔是種不錯的選擇,但隨著時間的推移和個人 PC 時代的到來栅炒,人們意識到可通過壓縮數(shù)據(jù)的方式來大量節(jié)省存儲成本掂摔。所以 10 年后隨 MS-DOS 出現(xiàn)的 zip 文檔便是支持壓縮的歸檔格式术羔,zip 最常見的壓縮方式是采用 LZ77 算法實現(xiàn)的 deflate。由于它由 PKWARE 商業(yè)開發(fā)乙漓,所以 zip 格式也受專利保護多年级历。因此,為不侵犯到 PKWARE 的專利叭披,同樣采用 LZ77 算法的 gzip 格式被推出并廣泛使用寥殖。
Unix 的哲學就是把某事做到最好,所以 gzip 只被設計為壓縮文件涩蜘。因此嚼贡,為了創(chuàng)建壓縮歸檔,必需先使用 tar 創(chuàng)建歸檔同诫,之后再對歸檔文件進行壓縮粤策,因此才有了 .tar.gz 文件(為遵循 8.3 MS-DOS 文件名稱限制,又被簡稱為 .tgz)误窖。
隨著技術的不斷發(fā)展叮盘,具有更高壓縮比的壓縮算法也一一被實現(xiàn),例如:在 bzip2 中實現(xiàn)的 Burrows-Wheeler 算法(.tar.bz2 存檔)和 LZMA 算法實現(xiàn)的 .xz 存檔霹俺。
現(xiàn)在柔吼,用戶已經(jīng)可以在 Linux 和 Windows 中自由使用任何歸檔文件格式。由于 zip 格式已經(jīng)被 Windows 操作系統(tǒng)原生支持丙唧,因此這種格式特別適合跨平臺環(huán)境愈魏。