『壹』 壓縮文件格式(zip、rar)哪個更好
rar文件格式更好,rar 的壓縮率顯著高於 zip,與 7z 相當。
rar 的文件名使用 Unicode 存儲. 而 zip 由於歷史原因, 文件名不支持 Unicode 編碼 (新版的 zip 規范允許指定 Unicode 編碼, 但大部分應用程序支持不理想), 存在亂碼問題,。
例如日文 Windows 下創建的 zip 壓縮包, 如果在簡體中文 Windows 下直接解壓, 文件名里非 ASCII 字元就會變成亂碼。與 7z 相比, rar 支持恢復記錄,壓縮文件損壞時一般都可以直接修復而無需重新下載,所以很多資源發布組都會使用 rar 打包並且加上恢復記錄 (rr5)。
壓縮原理:
由於計算機處理的信息是以二進制數的形式表示的,因此壓縮軟體就是把二進制信息中相同的字元串以特殊字元標記來達到壓縮的目的。為了有助於理解文件壓縮,請在腦海里想像一幅藍天白雲的圖片。
對於成千上萬單調重復的藍色像點而言,與其一個一個定義「藍、藍、藍……」長長的一串顏色,還不如告訴電腦:「從這個位置開始存儲1117個藍色像點」來得簡潔,而且還能大大節約存儲空間。這是一個非常簡單的圖像壓縮的例子。
其實,所有的計算機文件歸根結底都是以「1」和「0」的形式存儲的,和藍色像點一樣,只要通過合理的數學計算公式,文件的體積都能夠被大大壓縮以達到「數據無損稠密」的效果。總的來說,壓縮可以分為有損和無損壓縮兩種。
如果丟失個別的數據不會造成太大的影響,這時忽略它們是個好主意,這就是有損壓縮。有損壓縮廣泛應用於動畫、聲音和圖像文件中,典型的代表就是影碟文件格式mpeg、音樂文件格式mp3和圖像文件格式jpg。
但是更多情況下壓縮數據必須准確無誤,人們便設計出了無損壓縮格式,比如常見的zip、rar等。壓縮軟體(compression software)自然就是利用壓縮原理壓縮數據的工具,壓縮後所生成的文件稱為壓縮包(archive),體積只有原來的幾分之一甚至更小。
當然,壓縮包已經是另一種文件格式了,如果想使用其中的數據,首先得用壓縮軟體把數據還原,這個過程稱作解壓縮。常見的壓縮軟體有winzip、winrar等。
『貳』 壓縮文件類型哪個好
7z 好 壓縮率 最高 一、目錄表(TOC)與分卷(Volume)
拋開壓縮演算法不談,我認為zip、rar在文件格式上最大的差異就在目錄表(Table of Contents,TOC):zip有TOC,而rar沒有。
TOC這個詞其實是從出版界借用過來的,指的就是每一本書正文前面的「目錄」,它的作用地球人都知道:如果想快速找到書中某一內容,可以先查TOC,然後按照TOC指明的頁碼直接翻即可。
在紙質書里TOC是印刷出來的一張表,而在電子文件里則是由結構化數據構成的一張表,它的目的同樣是為了快速定位:如果想找文件中的某一內容,可以先查TOC,知道感興趣的內容在文件的什麼位置,直接跳過去就行了。最常見的運用就是avi、rm等多媒體文件:播放的時候經常有人在播放條上點來點去跳著看(即「隨機訪問」),如果沒有TOC,在長達幾百兆的文件里來回定位會慢死。
具體到zip文件里,TOC是放在文件尾部的一張表,裡面列出了zip包中每一個文件的屬性(文件名、長度等)和在zip包中的存放位置。如果需要隨機訪問zip包中的某一個文件,只需在TOC里找到這個文件的存放位置,直接跳過去即可。
而RAR文件里則沒有TOC,在文件頭之後所有文件按順序連續存放。
這種差異造成的結果就是:隨機訪問時zip比rar快,而順序訪問時rar比zip快。
所謂隨機訪問,就是前面說過的隨機訪問壓縮包中某個指定的文件。舉一個簡單的例子:一本反編譯或下載到的網頁電子書,有大量HTML、圖像、css、js,然後打成壓縮包。現在要求在不解包的情況下訪問其中的頁面:可以想像,打開每個HTML頁面的時候,它所附帶的圖像、css、js等文件可能隨機分布在整個壓縮包里,如果沒有TOC,查找每個文件的時候都要從頭開始找,將會有多慢。 所以各位可以理解為什麼jar包就是標准zip包,而我也只用zip格式保存反編譯出來的電子書、漫畫、PDG書等一切可能需要隨機訪問的東西。
所謂順序訪問,就是將整個壓縮包從頭解到尾。在這方面RAR具有天然的優勢。而且為了節省WinRAR列文件的時間,對於單個RAR我一般都直接通過右鍵菜單解壓縮,很少雙擊壓縮包打開再解壓。
由於rar的原作者已經去世,造成這種差異的確切原因我相信已不可考,但我個人猜測可能與DOS時代的備份軟體之爭有關:在DOS時代,電腦硬碟不像現在這樣奢侈,20MB就算很大了。這樣的容量用兩盒軟盤 即可備份,備份成本相對數據本身的價值來說非常低廉。因此在DOS時代,很多公司和機構都制定有定期硬碟備份政策,以免因為人為或非人為的因素 (早期硬碟可沒有如今可靠)而造成不可挽回的數據損失。在備份軟體方面,雖然微軟已經隨DOS提供了BackupRestore工具,但是他們基本不具備數據壓縮能力,因此在壓縮軟體中提供備份功能,就成為DOS時代的一個時尚。由於DOS時代的備份介質多為軟盤,因此壓縮 軟體的備份功能其實就轉化成如今很常見的一個功能:分卷壓縮功能,即按照軟盤容量進行分卷壓縮,然後將分卷壓縮文件備份(Backup)到軟盤,需要的時候再解壓,或恢復(Restore)到硬碟。
DOS時代最有名的zip工具是pkzip,出現得比DOS版的RAR早。在分卷壓縮時,pkzip按照zip文件規范,將TOC存放在最後,即存儲在最後一卷,由此帶來如下問題:
1、恢復時,每解壓一張盤,都要先將最後一張盤插進去一次,讀一次TOC。
2、只要最後一張盤上的TOC壞了,就算其它盤都是好的,也不能正常解壓。
這兩個缺點,尤其是第一個缺點實在是太臭名昭著了,因此當時出現了非常強烈的改革呼聲。在這個關鍵時刻,DOS版的RAR出現了:不僅壓縮率比pkzip高(這點在DOS時代非常重要,畢竟軟盤又貴容量又小),而且由於吸取了當時對zip格式的批評,取消了TOC,因此:
1、在恢復分卷壓縮的備份文件時,不需要頻繁插入帶有TOC的分卷,按順序換盤即可。
2、即使某個分卷損壞,也可以跳過,從完好的分卷再開始解壓。
由於這些原因(當然還有其它原因),RAR推出後迅速取得了成功,pkzip在DOS時代就開始流失用戶,到Windows時代基本消聲匿跡。在Windows時代推出的Winzip,則徹底放棄了分卷壓縮功能(zip格式永遠的痛?)。 而從我看到的源自WinRAR的UnRAR源代碼來看,現在WinRAR的解壓思路明顯還是把文件按順序從頭解到尾,看來當年備份恢復工具之爭的影響,還真是深遠。
二、固實(solid)壓縮方式
在壓縮演算法方面,我覺得rar格式最特色的是固實(solid)壓縮方式。WinRAR v3.42的幫助文件中對固實壓縮的說明如下:
固實壓縮文件是 RAR 的一種特殊壓縮方式存儲的壓縮文件,它把壓縮文件中的全部文件都當成一個連續數據流來看待。
這段說明其實揭示了固實壓縮格式能夠提高壓縮比的奧秘:數據壓縮的基礎是「重復」,例如aaaabbb這個字元串,裡面就有重復,如果表示為a4b3,看起來是不是變短了?這就是「數據壓縮」。「重復」是一個具有相對意義的概念,在某一范圍內看起來沒有重復,或重復不多的數據,把范圍擴大,說不定就能找到更多重復的數據了,這就是固實壓縮的奧秘。
舉一個簡單的例子:用zip和普通rar壓縮一堆jpg文件,很難壓下去,但是用固實壓縮方式的rar就可以,其原因就在於:jpg文件本身已經是壓縮格式了,單個jpg文件里很難再 找到可利用的重復數據,因此不論是用zip還是普通的rar都很難再壓縮,因為他們都將需要壓縮的文件分隔開來一個一個處理。但是對於固實rar來說,是將 所有需要壓縮的jpg文件當作一個整體來壓縮,這些jpg之間就存在重復的數據,如他們都有相同的文件頭(其中包括各種數據表)等,這就出現了可壓縮的空間。從我看到的資料來看,Flash文件也採用了類似的技術對jpg進行壓縮:如果在Flash文件中使用了多個jpg文件,它們可以共用一個文件頭。
當然天下不會有白吃的午餐,固實壓縮方式在提高壓縮比的同時,也有一些限制,在WinRAR v3.42幫助文件中的說法是:
固實壓縮可增加壓縮性能,特別是在添加大量的小文件的時候,但它也有一些重要的不利因素
對已存在的固實壓縮文件更新時較慢;
要從固實的壓縮文件解壓單個文件時,它之前的文件都需先經過分析。這造成當從固實的壓縮文件內取出文件時會比一般壓縮文件取出文件慢一些。但是,當從固實的壓縮文件解壓全部的文件時,解壓速度並沒有影響。
如果在固實壓縮文件中的任何文件損壞了,要從損壞的范圍中解壓全部的文件是不可能的。因此,如果固實壓縮文件是保存在例如軟盤等媒介時,推薦你在製作時使用「恢復記錄」。
固實壓縮的適用場合為
壓縮文件很少更新的時候;
不需要經常從壓縮文件中解壓一個文件或是部分文件的時候;
壓縮效率比壓縮速度更為重要的時候。
與前面說的「隨機訪問」對應,固實壓縮的RAR文件可能是世界上最不適合隨機訪問的:如果需要訪問固實RAR包中的某個文件,就要從文件頭開始解壓,一直解到這個文件。
三、安全性
這里的安全性包含幾個方面的含義:文件系統安全性、密碼保護安全性和文件數據安全性。
由於制訂zip格式規范的時候操作系統本身的文件安全性還沒有引起足夠的重視,因此zip格式只記錄最基本的文件屬性,包括只讀屬性等,沒有其它附加的安全屬性。
rar格式剛推出的時候,文件系統的安全性只能參照DOS,和zip差不多。但是rar畢竟是一種封閉的格式,想怎麼改作者一個人說了就算,因此當Windows中出現NTFS,並且引入擴展的文件系統安全屬性時,rar也積極跟進,所以現在應該說rar格式在這方面比zip強 。
在zip和rar格式中均提供了密碼保護功能,但是密碼保護的安全強度不同。
zip由於格式開放、代碼開源,因此zip密碼破解軟體出現得比較早,也比較多。初期以暴力破解為主,威脅不大,真正對zip密碼安全的致命一擊是known plain text(已知明文)攻擊法:如果知道加密zip文件中某段內容(密文,ciphertext)解密後的真正內容(明文,plain text),就可以反推出zip加密口令。在這種攻擊方法的威脅,及某些國家的法律對密碼技術的限制下, 著名開源組織zlib宣布永久放棄對加密zip的支持,詳見zlib網站上的相關說明(不過在zlib發行的源代碼里仔細找找,還是能找到原來的加解密相關代碼)。
記得rar剛推出的時候也和zip一樣,雖然不能列出加密文件中的文件內容,但可以列出加密文件中的文件名。後來大概也是被known plain text攻擊法嚇到了,增加了一個「加密文件名」選項,乾脆連加密rar文件里有哪些文件都看不見,讓攻擊者想猜明文都無從猜起。
rar格式比zip晚推出,在安全方面吸取了足夠的教訓,因此採用的是美國國家標准與技術局(National Institute of Standard and Technology, NIST)推薦的、目前公認安全程度比較高的AES對稱加密演算法 ,密鑰長度128位。在ASE被攻破以前(NIST認為30年內無法攻破),大家都只能在暴力法上兜圈子,所以密碼安全性應該說比zip高。對此WinRAR 3.42的幫助文件是這樣描述的:
ZIP 格式使用私有加密演算法。 RAR 壓縮文件使用更強大的 AES-128 標准加密。如果你需要加密重要的信息,選擇 RAR 壓縮文件格式會比較好一些。為了確實的安全性,密碼長度請最少要 8 個字元。不要使用任何語言的單詞作為密碼,最好是任意的隨機組合字元和數字,並且要注意密碼的大小寫。請記住,如果你遺失你的密碼,你將無法取出加密的文件,就算是 WinRAR 的作者本身也無法解壓加密過的文件。
在數據安全性方面,RAR格式本身支持一種特殊的附加信息類型,叫做「恢復記錄」。如果RAR文件有恢復記錄,在介質物理損壞或其它原因造成數據丟失時,WinRAR可以按照「恢復記錄」嘗試對數據進行修復。而zip格式無恢復記錄,因此在數據安全性方面應該說比RAR弱。
雖然RAR文件本身支持恢復記錄,但是在WinRAR里此選項預設是關閉的,而打開後會導致壓縮出來的RAR文件體積增加(增加的百分比與設置有關),可能會令某些人感到不習慣(我就親眼見到有人在論壇上抱怨為什麼壓出來的RAR文件會如此龐大),所以這個功能基本上形同虛設。
四、開放性
開放性的對比很明顯:zip格式不僅文件格式完全公開,而且有專門的開源組織提供操作源代碼,跨平台使用也沒有多大限制;rar格式完全保密,作者只提供解壓所需源代碼,不提供壓縮所需源代碼 ,跨平台使用有點麻煩。
zip開源組織中,最出名的是zlib和InfoZip,二者各有側重:zlib偏重對內存緩沖區的壓縮,因此被png等開源組織用做內部壓縮演算法,連java的jar程序內核都來自zlib,打出來的jar包自然也是一個標準的zip文件;InfoZip偏重對文件的操作 (包括口令保護),應用似乎不如zlib廣泛,但我個人覺得其實它還是滿好用的,前提是需要對它的源代碼進行一些必要的修改。
在png組織的網頁中有說到png格式的來歷,我覺得也很有意思:做png的一班人,其實原來都是做gif格式的,但是由於Unisys公司開始對gif格式的核心——LZW壓縮演算法徵收專利費,這幫人怒了,乾脆提出png格式:大結構方面還是採用分段結構,但是核心壓縮演算法採用開源的zlib,壓縮 效果在多數情況下比gif的LZW更強。由於沒有版許可權制,在靜態圖形領域png得到廣泛應用,如果不是及時提出動畫支持並因此在web上大行其道,我估計gif早就死掉了。
RAR的解壓源代碼在其官方網站www.rarlab.com上提供,通常比WinRAR的正式版本晚一點,不過據說是直接從WinRAR的源代碼中摳出來的,所以兼容性應該沒有什麼問題。
五、結論
以下觀點純屬個人觀點,僅供參考,不具有如何指導意義:
如果經常需要對壓縮包進行隨機訪問,應該選zip而不是rar。雖然將下載到的rar重新壓縮成zip會麻煩一次,但是以後會減少無數的麻煩。
如果需要分卷壓縮(如某些網站對上傳文件大小有限制),則只能用rar。事實上,這也是我唯一會使用rar格式的場合,其它時候一律zip沒商量。
『叄』 將視頻壓縮成哪種格式最好為什麼
將視頻壓為MP4格式效果比較好。手機建議用MP4或者3GP格式。視頻壓縮的方法可以下載視頻壓縮軟體來操作。以風雲壓縮軟體為例: