SHAR 存檔格式

SHAR(Shell Archive)是一種基於 Unix 的存檔格式,它將檔案捆綁到單一 shell 腳本中。此格式將檔案編碼為純文字腳本,可在類別 Unix 系統上執行以重新建立原始檔案。 SHAR 在 Unix 早期被廣泛用於軟體分發和共享檔案集合,特別是透過電子郵件或 Usenet。雖然它在很大程度上已被tar 和zip 等更現代的格式所取代,但SHAR 仍然是Unix 生態系統中重要的歷史格式,因其簡單性以及使用基本shell 命令創建和提取的能力而受到重視。

一般 SHAR 檔案資訊

SHAR 檔案(Shell 檔案)是一種基於 Unix 的格式,用於將多個檔案捆綁到單一純文字腳本中。執行時,該腳本會在類別 Unix 系統上重新建立原始檔案和目錄。 SHAR 在 Unix 早期特別流行,用於透過電子郵件或 Usenet 分發軟體、文件和其他文件集合。雖然現代壓縮格式已在很大程度上取代了 SHAR,但由於其簡單性和易於與基本 shell 命令一起使用,它仍然是 Unix 歷史上的重要格式。

SHAR 存檔格式歷史記錄

  • 20 世紀 80 年代:SHAR 成為一種將檔案捆綁到單一腳本中以便在 Unix 系統上分發的便捷方法。它在電子郵件和 Usenet 是共享軟體和檔案的主要方式的環境中特別有用。
  • 20 世紀 90 年代初:隨著互聯網使用的增長,SHAR 仍然是透過電子郵件分發文件的流行格式,其簡單的基於文字的格式可以輕鬆地透過早期網路傳輸。
  • 1990 年代中期:tar 等更高級存檔格式的興起,與 gzip 等壓縮工具相結合,導致 SHAR 的使用量下降,儘管它仍然用於簡單的基於文本的分發。
  • 2000 年代:SHAR 變得更像是一種小眾格式,主要用於特定的 Unix 社群或用於歷史目的。它易於創建並且與基本 shell 命令相容,使其與某些任務相關。
  • 今天:雖然大部分被現代歸檔格式所取代,SHAR 仍然因其在 Unix 歷史中的作用而被認可,並且偶爾用於遺留系統或用於教育目的。

Shell 檔案的結構

SHAR(Shell Archive)檔案的結構被設計為可以在類別 Unix 系統上執行的自解壓縮腳本。與二進位存檔不同,SHAR 檔案是純文本,由 shell 解釋。以下是典型 SHAR 存檔結構的概述:

  • 標頭: SHAR 檔案以標頭開頭,標頭通常包含有關存檔的註釋,例如創建日期、作者和內容描述。本節也可能包括解壓縮存檔的說明。
  • 檔案指令:
    • SHAR 檔案中的每個檔案都由一系列 shell 指令表示。這些指令通常以 echo 或 cat 指令開頭,將檔案內容寫入系統上的適當位置。
    • 檔案指令還包括在建立每個檔案後使用 chmod 指令設定正確檔案權限的指令。
  • 文件內容: 每個文件的實際內容都包含在 SHAR 檔案中,通常使用基於文字的方法(例如 uuencoding)進行編碼。這確保了二進位檔案可以安全地包含在存檔中並以純文字形式傳輸。
  • 目錄結構: 如果 SHAR 檔案包含目錄,則腳本包含在將檔案提取到其中之前使用 mkdir 命令建立這些目錄的命令。
  • 頁尾: SHAR 存檔以頁腳結尾,其中通常包含附加註釋、校驗和或其他元數據,用於驗證提取文件的完整性。頁腳還可以包括指示提取過程成功完成的訊息。

SHAR 壓縮方法

SHAR(Shell Archive)檔案本身並沒有包含任何壓縮方法。相反,它們是純文字 shell 腳本,旨在打包文件,以便在類 Unix 環境中輕鬆分發和提取。但是,可以透過幾種不同的方式來應用壓縮:

  • 未壓縮: 預設情況下,SHAR 存檔是未壓縮的文字文件,這使得它們可以作為 shell 腳本輕鬆讀取和執行。這種方法保持了簡單性和廣泛的兼容性,允許使用標準 shell 命令輕鬆解壓縮檔案。
  • 外部壓縮: SHAR 檔案在建立後可以使用 GZIP、BZIP2 或 ZIP 等外部壓縮工具進行壓縮。這減少了分發或儲存的整體檔案大小,但需要在執行 SHAR 存檔之前解壓縮。例如,SHAR 文件可能會作為 .shar.gz 或 .shar.bz2 文件分發。
  • 解包後壓縮: 在某些情況下,SHAR 存檔可能包含腳本中的命令,用於在提取單一檔案後對其進行壓縮。這種方法不太常見,但當需要在解包過程中壓縮存檔中的特定檔案時,可以使用這種方法。
  • 與 TAR 組合: 雖然 SHAR 本身不包含壓縮,但它可以與 TAR 存檔(然後可以壓縮)組合以創建 .tar.shar.gz 或類似檔案。此方法允許在一個步驟中歸檔和壓縮更大的檔案集合。

.shar 支援的操作

Aspose.Zip API 支援處理 .shar 檔案的各種操作,這些檔案是通常用於分發軟體和建立備份的磁碟映像檔。以下是 Aspose.Zip API 支援的 .shar 檔案的一些主要操作:

  • 建立 SHAR 檔案: SHAR 檔案除了簡單之外,還提供了一種用於軟體分發和備份建立的通用方法。 Aspose.Zip 讓您能夠透過一系列全面的功能無縫地利用這種格式。從現有文件和目錄建立全新的 SHAR 檔案。此功能非常適合製作軟體安裝程式或全面備份。 Aspose.Zip 可能不支援與傳統檔案(如 ZIP、RAR、7Z 和其他格式的 SHAR 檔案)相關的所有功能。

.shar 文件的結構

SHAR 檔案本質上是一個 shell 腳本。它是一種基於文字的格式,包含在執行時重新建立原始文件結構的命令。基本結構:

  • Shell 腳本標頭: 標準 shell 腳本標頭(例如,#!/bin/sh)。
  • 檔案元資料: 有關每個檔案的信息,包括檔案名稱、權限和修改時間。
  • 文件內容: 實際文件內容,通常以 base64 或類似格式編碼。
  • Shell 指令: 建立目錄並將檔案內容寫入磁碟的指令。

.shar 文件的結構

SHAR 檔案館的衰落

拒絕的原因

如今,SHAR 存檔被認為是一種傳統格式,很少在現代軟體發行版中使用。它們可能仍然會在歷史軟體歸檔中或在需要與非常舊的系統相容的利基情況下遇到,但它們在很大程度上已被更有效和可靠的歸檔方法所取代。

  • 功能有限: SHAR 存檔缺乏現代存檔格式中的功能,例如壓縮、錯誤處理和元資料保存。
  • 安全性問題: 作為 shell 腳本,SHAR 檔案可能包含惡意程式碼,從而帶來安全風險。
  • 效率: 與較新的格式相比,SHAR 在儲存和提取速度方面通常效率較低。
  • 更好的替代方案的出現: ZIP、TAR 和 7-Zip 等格式提供卓越的效能、安全性和功能,使其成為大多數用戶的首選。

使用 SHAR 檔案的範例

Aspose.Zip 提供了建立 SHAR(Shell Archive)檔案的功能,可讓您將多個檔案捆綁到一個檔案中,以便在 UNIX 和 Linux 系統上輕鬆分發。但是,需要注意的是,Aspose.Zip 目前僅支援建立 SHAR 存檔,不包含其他操作的功能,例如提取或修改現有 SHAR 檔案。下面的範例示範如何在專案中使用 Aspose.Zip 建立 SHAR 存檔。

Create SHAR Arcive via C#

    using(SharArchive a = new SharArchive())
    {
        a.CreateEntry(first.bin, data.bin);
        a.Save(result.shar);
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

附加資訊

人們一直在問

1. 如何從 SHAR 存檔中提取文件?

要從 SHAR 存檔中提取文件,您需要執行 SHAR 文件本身。該腳本將運行命令來重新建立原始文件結構。

2. 如今,SHAR 檔案還在使用嗎?

如今,SHAR 檔案已很少使用。 ZIP、TAR 和 7-Zip 等現代存檔格式提供卓越的功能和安全性,使其成為大多數用戶的首選。

3. SHAR 檔案有哪些限制?

SHAR 存檔有一些限制,包括缺乏壓縮、元資料支援有限、由於其 shell 腳本性質而存在潛在的安全風險,以及與現代存檔格式相比效率低下。