提取 SHAR 檔案

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

私密與安全

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

極速

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

完全免費

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

什麼是 SHAR 格式?

Shell 封存檔

SHAR(SHell ARchive)格式是一種檔案封存和壓縮格式,通常用於 Unix 和類 Unix 作業系統。它被開發為一種將多個檔案和目錄封裝成單一封存檔案的簡單方式,以利於儲存和傳輸。SHAR 格式允許對封存檔案進行選擇性壓縮,以減少產生的封存檔案的整體大小。

SHAR 封存檔案基本上是一個 shell 腳本,其中包含一系列用於重建原始目錄結構和檔案的指令。當執行 SHAR 檔案時,shell 會詮釋指令並將檔案解壓縮到其原始位置。這使得 SHAR 封存檔案易於建立和解壓縮,而無需使用專門的封存工具,只要有 Unix shell 即可。

SHAR 封存檔案的結構包含標頭、檔案元資料和實際檔案內容。標頭通常包含一個 shebang 行(例如 `#!/bin/sh`)以指定 shell 腳本的詮釋器,接著是任何必要的 shell 指令或變數宣告。標頭也可能包含註解或解壓縮封存檔案的說明。

在標頭之後,SHAR 封存檔案包含一系列區段,每個區段代表一個要封存的檔案或目錄。每個區段都從檔案的元資料開始,例如其名稱、權限、擁有權和時間戳記。此元資料使用 shell 指令表示,這些指令在解壓縮檔案時設定適當的屬性。

在元資料之後,檔案的實際內容會包含在封存檔案中。檔案內容通常使用 `uuencode` 或 `base64` 編碼方式編碼,以確保內容與 shell 腳本的文字性質相容。編碼內容會分成較小的區塊,並在腳本中列印為一系列 `echo` 或 `printf` 指令。

如果 SHAR 封存檔案包含目錄,則目錄結構會使用 `mkdir` 指令和適當的元資料設定重新建立。然後,每個目錄中的檔案會以與上述相同的方式新增到封存檔案中。

SHAR 封存檔案可以選擇性地包含壓縮,以減少產生的檔案大小。與 SHAR 一起使用的常見壓縮方法包括 `gzip`、`bzip2` 和 `compress`。壓縮通常會在將個別檔案編碼並新增到封存檔案之前套用。當解壓縮 SHAR 封存檔案時,shell 腳本會自動解壓縮壓縮檔案。

若要建立 SHAR 封存檔案,可以使用 `shar` 指令,此指令在大部分 Unix 和類 Unix 系統上都可用。建立 SHAR 封存檔案的基本語法為:`shar [選項] 檔案1 檔案2 目錄1 ... > 封存檔案.shar`。指定的檔案和目錄將包含在產生的封存檔案中。

解壓縮 SHAR 封存檔案就像執行封存檔案中包含的 shell 腳本一樣簡單。這可以透過使用 `chmod` 指令讓 SHAR 檔案可執行,然後將其作為腳本執行:`chmod +x 封存檔案.shar && ./封存檔案.shar`。shell 會詮釋腳本中的指令並重建原始檔案和目錄。

SHAR 格式的一個優點是其簡單性和可攜性。SHAR 封存檔案可以在任何具有 Unix shell 的系統上建立和解壓縮,而無需額外的軟體。然而,與 `tar` 或 `zip` 等更進階的封存格式相比,SHAR 格式有一些限制。SHAR 封存檔案缺乏隨機存取個別檔案、完整性檢查或內建加密等功能。

儘管有其限制,SHAR 格式在某些情況下仍然有用,特別是在處理基於 Unix 的系統或需要簡單性的時候。它提供了一種直接的方式來封裝和分發檔案,作為單一的自解壓縮封存檔案。

總之,SHAR 封存檔案格式是一種簡單且可攜的方式,可以將多個檔案和目錄封裝成單一的 shell 腳本封存檔案。它允許選擇性壓縮,並且可以使用標準 Unix shell 指令輕鬆建立和解壓縮。儘管與其他封存格式相比缺乏進階功能,但 SHAR 仍然是 Unix 生態系統中一個有用的工具,可滿足基本的封存和分發需求。

檔案壓縮透過減少冗餘,讓相同的資訊佔用更少的位元。可壓縮的上限受資訊理論約束:對於無失真壓縮,上界是信源熵(參見香農的信源編碼定理以及他於 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。這些工具可以从壓縮格式中提取原始檔案。