提取 XAR 檔案

無限制 作業。檔案大小可達 2.5GB。免費,永遠免費。

私密與安全

一切都在您的瀏覽器中進行。您的檔案絕不接觸我們的伺服器。

極速

無需上傳,無需等待。在您拖放檔案的瞬間即可轉換。

完全免費

無需帳戶。無隱藏費用。無檔案大小限制花招。

什麼是 XAR 格式?

可擴展封存檔

XAR(可擴充式檔案)是一種由 Apple Inc. 開發的檔案格式,用於在 macOS 上打包和分發軟體。它取代了 .pkg 和 .dmg 等舊格式,提供了多項優點,例如增強安全性、更小的檔案大小和更好的效能。XAR 檔案使用 .xar 檔案副檔名,可以使用 macOS 附帶的 xar 命令列公用程式建立和解壓縮。

XAR 格式基於 XML(可擴充式標記語言)標準。XAR 檔案包含三個主要組成部分:以 XML 格式記載檔案內容的目錄 (TOC)、儲存在檔案中的實際檔案和目錄,以及用於安全性的數位簽章。目錄作為索引,指定檔案中的路徑、大小和其他元資料。這種基於 XML 的結構允許擴充性,因為 Apple 或第三方可以新增自訂標籤來支援新功能。

XAR 格式的一個關鍵方面是它使用壓縮。預設情況下,XAR 使用 zlib 壓縮來縮小已封存檔案的大小。目錄本身也經過壓縮。與儲存未壓縮檔案的 .pkg 等舊格式相比,這會產生更小的檔案大小。但是,XAR 也支援在需要時儲存未壓縮的檔案。可以個別在目錄中指定套用於每個檔案的壓縮。

為了確保 XAR 檔案的完整性和真實性,此格式包含數位簽章。每個 XAR 檔案都包含一個或多個涵蓋整個目錄的簽章。這些簽章是使用公開金鑰密碼學建立的,通常使用 RSA 或 DSA 演算法。簽章允許接收者驗證檔案未被竄改,且來自受信任的來源。Apple 使用 XAR 簽章在 Mac App Store 上分發軟體更新和應用程式。

當開啟 XAR 檔案時,目錄會先解壓縮並解析。目錄提供目錄結構和檔案元資料,類似於 Unix 系統上使用的「tar」格式。實際檔案資料儲存在檔案中的目錄之後。每個檔案的資料可以壓縮或解壓縮,如目錄中對應的項目所指示。要解壓縮檔案,會使用目錄中的偏移量和大小資訊來找到其資料。

XAR 格式支援超越基本封存的幾個進階功能。其中一項功能是能夠在單一檔案中包含多個目錄。這允許建立增量更新,其中只有變更的檔案需要包含在更新檔案中。多個目錄可以描述軟體不同版本中的檔案狀態。智慧更新機制可以使用這些資訊來有效地套用增量修補程式。

此外,XAR 檔案可以儲存與已封存檔案關聯的延伸屬性和存取控制清單 (ACL)。延伸屬性是可以用來儲存應用程式特定元資料的鍵值對。ACL 定義存取檔案的詳細權限。透過在檔案中保留這些資訊,XAR 確保在目標系統上解壓縮時會還原原始檔案屬性。

XAR 格式也包含程式碼簽署的規定。除了涵蓋目錄的檔案層級簽章之外,檔案中的個別檔案也可以有自己的簽章。這對於分發需要獨立驗證的軟體組件很有用。例如,外掛程式架構可以使用程式碼簽署來確保只有受信任的外掛程式才能由應用程式載入。

XAR 的另一個功能是它可以儲存硬連結。硬連結允許多個目錄項目參考磁碟上的同一個檔案資料。在 XAR 目錄中,硬連結使用指向原始檔案項目的特殊 XML 元素表示。當解壓縮檔案時,會重新建立硬連結,保留磁碟空間並維護原始目錄結構。

為了以程式方式處理 XAR 檔案,開發人員可以使用 xar 命令列工具或 libxar 等函式庫。xar 工具提供用於建立、解壓縮和處理 XAR 檔案的命令。它支援壓縮、簽署和驗證的各種選項。Libxar 是實作 XAR 格式的 C 函式庫,並提供用於讀取和寫入 XAR 檔案的 API。它允許開發人員將 XAR 支援整合到自己的應用程式中。

總之,XAR 格式提供了一種現代且可擴充的方式,用於在 macOS 上封裝和分發軟體。它使用 XML 作為目錄、壓縮以縮小檔案大小、數位簽章以確保安全性,以及支援增量更新和程式碼簽署等進階功能,使其成為開發人員和系統管理員的強大工具。隨著 Apple 持續改進和推廣此格式,XAR 很可能會成為 macOS 上軟體分發的標準。

檔案壓縮透過減少冗餘,讓相同的資訊佔用更少的位元。可壓縮的上限受資訊理論約束:對於無失真壓縮,上界是信源熵(參見香農的信源編碼定理以及他於 1948 年發表的《通信的數學理論》)。對於有失真壓縮,碼率與感知品質之間的權衡由率失真理論描述。

兩大支柱:建模與編碼

多數壓縮器分兩個階段。首先,模型會預測或揭露資料中的結構。接著,編碼器把這些預測轉成近乎最優的位元型態。經典的建模家族是 Lempel–Ziv:LZ77 (1977)及 LZ78 (1978) 會偵測重複子字串並輸出參照而非原始位元組。編碼面則由霍夫曼編碼(見原始論文1952)為較常出現的符號分配更短的碼字。算術編碼範圍編碼再進一步逼近熵極限,而現代的非對稱數值系統(ANS)則用查表方式取得相似壓縮率。

常見格式怎麼做

DEFLATE(被 gzipzlibZIP 採用)把 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檔是一種使用無失真壓縮以減少一個或多個檔案大小的檔案格式。在ZIP檔中的多個檔案被有效地打包為單一的檔案,這也讓分享變得更加容易。

我可以壓縮一個已經壓縮過的檔案嗎?

技術上可行,儘管額外的大小減少可能非常小或甚至適得其反。壓縮一個已經壓縮過的檔案有時可能會增加其大小,原因在於壓縮演算法所增加的metadata。

我該如何解壓壓縮的檔案?

解壓壓縮的檔案,通常需要一個解壓縮或解zip的工具,像是WinZip或7-Zip。這些工具可以从壓縮格式中提取原始檔案。