TAR アーカイブ形式

tar アーカイブ形式は、ファイルを保存するための信頼できる方法を提供します。元のデータをバイトごとに保存し、先頭に 512 バイトのヘッダーを追加します。ファイル サイズも、512 バイトのブロックにきちんと収まるように調整されます。興味深いことに、ヘッダーにはエラー検出用の組み込みチェックサムが含まれています。標準の tar ユーティリティは破損したヘッダー (およびその結果関連ファイル) をスキップする可能性がありますが、アーカイブの残りの処理は続行され、破損していないファイルにアクセスできることが保証されます。

TARアーカイブ情報について

「テープ アーカイブ」の略称である tar ファイル形式は、UNIX システムの tar ユーティリティによって作成されます。これは、バックアップや配布などのタスクのためにファイルをまとめてバンドルするアーカイブとして機能します。圧縮アーカイブ形式とは異なり、tar ファイルには、tarball とも呼ばれる複数のファイルが、アーカイブに関するメタデータとともに非圧縮形式で保存されます。 tar ファイル自体は圧縮されていませんが、gzip や bzip2 などのユーティリティを使用して圧縮すると、効率的に保存したり転送したりできます。
tar ファイル形式自体には圧縮機能が組み込まれていないため、tar アーカイブは、gzip、bzip2、XZ (7-Zip / p7zip LZMA / LZMA2 圧縮アルゴリズムを使用)、Brotli、Zstandard などの外部ユーティリティを使用して圧縮されることがよくあります。 、および同様のツール。この圧縮により、アーカイブのサイズが削減され、移植が容易になり、データのバックアップが効率的に行われます。このプロセスで生成された圧縮ファイルには、tgz、tbz、txz、tzst などの単一拡張子、または tar.gz、tar.br、tar.bz2、tar.xz、tar.zst などの二重拡張子が付いている場合があります。

TAR アーカイブ形式の進化

tar アーカイブ形式は時間の経過とともに進化してきました。 1980 年代以降に tar ユーティリティに追加された新機能により、機能を向上させるための追加情報を含む形式拡張が行われました。初期の tar 形式では数値フィールドの格納方法に一貫性がありませんでしたが、移植性を高めるために後のバージョンではこの問題が解決されました。この改善は、1988 年の tar 形式の最初の POSIX 標準から始まりました。
POSIX.1 2001 では、「拡張 tar」形式 (tar.h または pax とも呼ばれます) が導入されました。この形式は最も柔軟で、他の tar 仕様の機能が組み込まれています。これにより、ベンダーはタグを使用してカスタム機能を追加できます。 ドキュメントでは、すべての tar 実装がこの形式を完全に処理できるわけではないことが強調されていますが、その設計により、「ustar」アーカイブを読み取ることができるツールであれば、ほとんどの「posix」アーカイブも読み取ることができます。さらに、POSIX.1 2001 では、tar アーカイブに対する以前の 8 GB のファイル サイズ制限がなくなりました。

TAR 構造

TAR アーカイブの核心は、一連のデータ ブロックです。これらの固定サイズのブロック 512 バイト はそれぞれ直線的に配置されます。アーカイブの終わりを示すために、ゼロで埋められた 2 つの連続したブロックがあります。
ただし、論理的に見ると、TAR アーカイブは一連のファイル エントリです。各エントリは複数のブロックで構成されており、最初のブロックは常にエントリ ヘッダーになります。残りのブロックには、実際のファイルの内容が保存されます。
エントリ ヘッダーの内部
エントリ ヘッダーは、アーカイブ内の各ファイルの設計図として機能します。以下の情報が含まれます

  • ファイル名 (100 バイト): このエントリに格納されているファイルの名前。
  • ファイル権限 (8 バイト): ファイルにアクセスするための権限。8 進数の文字列として表されます。
  • 所有者 ID (8 バイト): ファイル所有者の数値ユーザー ID (8 進数形式)。
  • グループ ID (8 バイト): ファイル所有者の数値グループ ID (8 進数形式)。
  • ファイル サイズ (12 バイト): 8 進数形式でのファイルのサイズ。
  • 最終変更時刻 (12 バイト): ファイルの最終変更の 8 進数のタイムスタンプ。
  • チェックサム (8 バイト): ヘッダー データの整合性を検証するために使用されるチェックサム値。
  • ファイル タイプ (1 バイト): 保存されているファイルのタイプ (通常のファイル、ハード リンク、またはシンボリック リンク) を示します。
  • リンクされたファイル名 (可変長): エントリがリンク (ハードまたはシンボリック) の場合、このフィールドにはリンクされたファイルの名前が格納されます。

この形式の利点

  • 汎用性 - TAR は、複数のファイルやディレクトリを 1 つのアーカイブ ファイルに保存できる汎用性の高い形式であり、さまざまなバックアップや配布のニーズに適しています。
  • ファイル属性の保存 TAR は、アクセス許可、所有権、タイムスタンプなどの重要なファイル属性を保存し、アーカイブされたデータの整合性と使いやすさを確保します。
  • シンプルさ - TAR ファイルの構造はシンプルで簡単なので、操作や処理が簡単です。これにより、TAR アーカイブに関連するタスクのプログラミングと自動化が簡素化されます。

TAR アーカイブでサポートされる操作

Aspose.ZIP を使用すると、ユーザーは特定のエントリまたはアーカイブ全体を抽出できます。 Aspose.ZIP for .NET の場合 TarArchiveClass を使用して .tar.gz ファイルを開き、そのエントリを反復して目的の場所に抽出できます。 Aspose.ZIP for Java の場合 TarArchive を使用して .tar.gz ファイルを開いてエントリを抽出する同様のアプローチ。

TAR ファイル - 内部構造

セグメント ファイルには、セグメントに関する生データが保存されます。さまざまなセグメント タイプが存在しますが、TAR ファイルではデータ セグメントとバルク セグメントのみが区別されます。バルク セグメントは、TAR ファイルに「そのまま」直接保存されます。
ただし、データ セグメントは、他のセグメントまたは生のバイナリ コンテンツへの参照を見つけるために検査されます。これらの参照は、データ セグメント内に一意の識別子 (UUID) のリストとして単純に保存されます。参照セグメントは、現在の TAR ファイル内または外部に配置できます。
内部参照は、TAR ファイルのインデックスをチェックすることで見つかります。外部参照には、別の TAR ファイル内のセグメントを見つけるために外部ツールが必要です。データ セグメント内の参照セグメントのリストは、より高速に取得できるようにグラフ ファイルに保存されます。このリストは、検索プロセスを最適化するために順序付けされています。

TAR ファイル - 内部構造

内部アーカイブ構造

  • ファイル メタデータ - tar アーカイブと同様に、各ファイルには変更時間やアクセス許可などの基本情報が保存されます。ただし、このセクションは柔軟であり、ニーズに応じて、アクセス コントロール リスト (ACL) や拡張属性 (EA) などの追加の詳細を省略したり、追加したりできます。データの整合性を確保するために、通常のファイルには強力なハッシュ関数 (SHA1 など) を含めることをお勧めします。
  • 複数のコンテンツ ストリーム - 従来のアーカイブとは異なり、ファイルは内部データ ファイル内に複数のデータ ストリームを持つことができます。これは、ファイルに関連付けられた拡張属性またはリソース フォークを保存するのに役立ちます。
  • ヘッダー - 内部インデックス ファイルはファイル ヘッダーを保持し、内部データ ファイル全体に散在するヘッダーをミラーリングします。ただし、個別に保存する場合、インデックス ヘッダーはデータ ファイル内の対応するデータの開始位置を参照する必要があります。さらに、インデックス内のディレクトリ エントリには、それに含まれるファイルと、内部ファイル インデックス内の対応するオフセットがリストされます。
  • 重複メタデータの理論的根拠 - この設計選択により、効率的なデータ ストリーミング/デコードとランダム ファイル アクセスの両方が保証されます。さらに、メタデータは適切に圧縮されるため、ストレージのオーバーヘッドが最小限に抑えられます。テストによると、メタデータが占有するストレージ容量は通常 0.3% 未満であるため、トレードオフを行う価値はあります。
  • ブロック ヘッダー - ブロック ヘッダーには、外部ファイルと同様に、ブロック サイズ情報と一意の識別子のシーケンスが含まれています。

TARの使用例

Aspose.ZIP API を使用すると、他のサードパーティ アプリケーションを必要とせずに、アプリケーションでアーカイブを抽出できます。 Aspose.ZIP API は、TAR アーカイブを操作するための TarArchive クラスを提供します。

Add entries to existing TAR archive via C#

All you need to do is open archive for extraction and add entry to archive .

    using (TarArchive archive = new TarArchive(existing.tar))
    {
        archive.CreateEntry("one_more.bin", data.bin);
        archive.Save(added.tar);
    }

Delete entries from existing TAR archive via .net

Entries of tar archive can be deleted with similar DeleteEntry methods.

using (var archive = new TarArchive("two_files.tar"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.tar");
}

Add files to TAR archive without compression

Tar is a file archival format used to group multiple files and directories into a single archive file without compression , unlike formats like ZIP, RAR and others. To create a tar archive without specifying any compression settings, simply use a TarArchive instance.

    using (FileStream tarFile = File.Open("joint.tar", FileMode.Create))
    {
        FileInfo fi1 = new FileInfo("text.txt");
        FileInfo fi2 = new FileInfo("picture.png");
        using (TarArchive archive = new TarArchive())
        {
            archive.CreateEntry("text.txt", fi1);
            archive.CreateEntry("picture.png", fi2);
            archive.Save(tarFile);
        }
    }

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

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

TAR アーカイブに関する追加情報

人々は尋ねてきました

1. TAR アーカイブとは何ですか?

TAR アーカイブ (Tape Archive の略) は、複数のファイルとディレクトリを圧縮せずに 1 つのアーカイブ ファイルにバンドルするために使用されるファイル形式です。これは、Unix ベースのシステムでのバックアップと配布の目的で一般的に使用されます。

2. TAR アーカイブの利点は何ですか?

TAR は、ほとんどのオペレーティング システムおよびアーカイブ プログラムと互換性があるため、汎用性を誇り、さまざまなプラットフォーム間でのシームレスなデータ共有と交換を容易にします。 TAR アーカイブのシンプルさは単純な構造にあり、ファイルの作成、抽出、操作が簡単に行えます。さらに、TAR は、gzip や bzip2 などの外部ツールを使用した圧縮を可能にすることで効率を高め、ユーザーがファイル サイズを削減し、データ送信中にストレージ スペースと帯域幅を節約できるようにします。

3. TAR アーカイブにはどのような制限がありますか?

TAR は、Unix ベースのシステムでファイルのアーカイブと配布によく使用される多用途のファイル形式ですが、注意すべき制限がいくつかあります。まず、TAR には圧縮機能が組み込まれていないため、ファイル サイズを削減するには gzip や bzip2 などの追加ツールが必要になります。次に、TAR アーカイブにはネイティブの暗号化機能が提供されていないため、データ セキュリティが必要な場合は、パスワード保護のために外部ツールに依存する必要があります。最後に、TAR では、元のファイルのタイムスタンプやアクセス許可などのファイル属性の保持のサポートが制限されているため、アーカイブ データの整合性に影響を与える可能性があります。