RAR(Roshal Archive)格式是由 Eugene Roshal 开发的专有存档文件格式。它于 1993 年首次发布,由于其高效的压缩、对多卷的支持、错误恢复和强大的加密功能,此后已成为数据压缩和存档的热门选择。该格式使用无损压缩算法的组合,包括 LZSS、PPM 和 Huffman 编码,以在保持数据完整性的同时实现高压缩率。
RAR 存档由一系列包含压缩文件、目录和元数据的“块”组成。存档以标记块开头,该标记块将文件标识为 RAR 存档并指定存档版本。在标记块之后,存档包含一个主头块,该主头块提供有关存档的一般信息,例如总大小、卷数和使用的加密方法(如果有)。
存档中的每个压缩文件都存储为文件头块,后跟一个或多个压缩数据块。文件头块包含有关文件元数据,例如其名称、大小、时间戳、属性和 CRC32 校验和。压缩数据块包含实际的压缩文件数据,必要时可以将其拆分为多个块。
RAR 使用固态存档方法,这意味着文件被压缩在一起作为一个连续的数据流,而不是单独压缩。这种方法可以提高压缩率,特别是对于类似文件集合,因为压缩器可以利用文件之间的冗余 。但是,固态存档对数据损坏的恢复能力较差,因为单个错误可能会影响多个文件。
为了确保数据完整性,RAR 采用恢复记录系统。恢复记录是包含有关存档结构和文件元数据的冗余信息的特殊块。在数据损坏的情况下,这些记录可用于重建存档的损坏部分。创建存档时,用户可以配置恢复记录的数量和大小。
RAR 支持多卷存档,这允许将大型存档拆分为更小、更易于管理的部分。多卷存档中的每个卷都是一个单独的 RAR 文件,具有自己的标记块和头,但具有指示其在集合中位置的其他信息。多卷存档对于在容量有限的存储介质(例如 CD 或 DVD)上存储或传输大型数据集非常有用。
RAR 格式提供强大的加密功能来保护敏感数据。可以使用 AES(高级加密标准)算法和 128 位或 256 位密钥对存档进行加密。当存档被加密时,所有文件数据和元数据都受到保护,并且需要密码才能提取内容。RAR 还支持一种较新的专有加密算法,称为 RAR5,它被设计为比旧的 AES 方法更安全。
RAR 格式的一个显着特点是对拆分文件压缩的支持。此功能允许在压缩之前将大文件分解成更小的部分,然后解压缩器可以透明地提取和重新组装这些部分。拆分文件压缩对于优化存储或通过有限带宽或间歇连接的网络传输大文件非常有用。
除了其压缩和存档功能外,RAR 还支持一些高级功能,例如存档注释、受密码保护的文件列表和使用数字签名的真实性验证。存档注释允许用户将描述性文本附加到存档,可用于提供有关提取内容的其他上下文或说明。受密码保护的文件列表在提供正确的密码之前隐藏加密文件的名称。数字签名验证允许用户确保存档来自受信任的来源并且未被篡改。
虽然 RAR 格式在压缩效率、数据保护和功能丰富性方面提 供了许多好处,但它也有一些缺点。其中最重要的是 RAR 是一种专有格式,官方压缩器和解压缩器实现是闭源的。这可能会限制互操作性,并使第三方开发人员更难创建兼容的工具。此外,RAR 的一些更高级功能(例如 RAR5 加密算法)可能不受所有解压缩器支持。
尽管存在这些限制,RAR 仍然是一种广泛使用且得到良好支持的存档格式,尤其是在 Windows 系统上。其高效的压缩、强大的错误恢复和强大的加密功能使其成为存档和保护重要数据的可靠选择。通过正确使用恢复记录、多卷存档和定期备份,RAR 存档可以为关键文件和数据集提供可靠的长期存储。
檔案壓縮透過減少冗餘,讓相同的資訊佔用更少的位元。可壓縮的上限受資訊理論約束:對於無失真壓縮,上界是信源熵(參見香農的信源編碼定理以及他於 1948 年發表的《通信的數學理論》)。對於有失真壓縮,碼率與感知品質之間的權衡由率失真理論描述。
多數壓縮器分兩個階段。首先,模型會預測或揭露資料中的結構。接著,編碼器把這些預測轉成近乎最優的位元型態。經典的建模家族是 Lempel–Ziv:LZ77 (1977)及 LZ78 (1978) 會偵測重複子字串並輸出參照而非原始位元組。編碼面則由霍夫曼編碼(見原始論文1952)為較常出現的符號分配更短的碼字。算術編碼與範圍編碼再進一步逼近熵極限,而現代的非對稱數值系統(ANS)則用查表方式取得相似壓縮率。
DEFLATE(被 gzip、zlib 與 ZIP 採用)把 LZ77 和霍夫曼編碼結合。其規格完全公開:DEFLATERFC 1951、zlib 封裝RFC 1950以及 gzip 檔案格式RFC 1952。Gzip 針對串流設計並明確不提供隨機存取。PNG 影像則把 DEFLATE 規範為唯一的壓縮方式(視窗最多 32 KiB),詳見 PNG 規格「Compression method 0… deflate/inflate… at most 32768 bytes」與W3C/ISO PNG 第二版。
Zstandard (zstd): 針對高壓縮率與極快解壓而設計的通用壓縮器。格式記載於RFC 8878(以及HTML 鏡像)和 GitHub 上的參考規格文件。與 gzip 類似,基本框架並不追求隨機存取。zstd 的絕招是字典:從語料擷取的小樣本能大幅改善許多小型或相似檔案的壓縮(參閱python-zstandard 字典文件與Nigel Tao 的示例)。各實作同時支援「非結構化」與「結構化」字典(討論)。
Brotli: 為網頁內容(如 WOFF2 字體、HTTP)優化,結合靜態字典與類 DEFLATE 的 LZ+熵編碼核心。規格載於RFC 7932,文件同時指出滑動視窗為 2WBITS-16,WBITS 介於 [10, 24](1 KiB-16 B 至 16 MiB-16 B),並且不嘗試隨機存取。Brotli 常在網頁文字上優於 gzip,解碼也相當快速。
ZIP 容器: ZIP 是一種檔案封存格式,可存放使用多種壓縮法(deflate、store、zstd 等)的項目。權威規格是 PKWARE 的 APPNOTE(參見APPNOTE 入口、托管副本以及美國國會圖書館的概覽ZIP File Format (PKWARE)/ZIP 6.3.3)。
檔案壓縮是一個減少檔案或檔案群大小的過程,通常用於節省儲存空間或加速網路傳輸。
檔案壓縮運作原理,透過識別並移除數據中的冗餘資訊。它使用演算法將原始數據編碼在較小的空間裡。
兩種主要的檔案壓縮類型是無失真及有失真壓縮。無失真壓縮可以完美地恢復原始檔案,然而有失真壓縮在一些資料品質的損失下能得到更大的壓縮程度。
一個常見的檔案壓縮工具範例是WinZip,它支援多種壓縮格式包括ZIP與RAR。
在無失真壓縮中,質量保持不變。然而,在有失真壓縮中,可能會有顯著的質量下降,因為它刪除了一些較不重要的數 據以便更大程度地減少檔案大小。
是的,相對於資料的完整性來說,檔案壓縮是安全的,尤其是無失真壓縮。然而,如同所有檔案,被壓縮的檔案也可能受到惡意軟體或病毒的攻擊,所以總是需要有專業的安全軟體以保護。
幾乎所有種類的檔案都可以被壓縮,包括文字檔案、圖像、音訊、視頻和軟體檔案。然而,壓縮程度可以因檔案類型而有顯著的不同。
ZIP檔是一種使用無失真壓縮以減少一個或多個檔案大小的檔案格式。在ZIP檔中的多個檔案被有效地打包為單一的檔案,這也讓分享變得更加容易。
技術上可行,儘管額外的大小減少可能非常小或甚至適得其反。壓縮一個已經壓縮過的檔案有時可能會增加其大小,原因在於壓縮演算法所增加的metadata。
解壓壓縮的檔案,通常需要一個解壓縮或解zip的工具,像是WinZip或7-Zip。這些工具可以从壓縮格式中提取原始檔案。