.TARファイルとは何ですか?
.tar 拡張子を持つファイルは、1 つ以上のファイルを収集するための Unix ベースのユーティリティで作成されたアーカイブです。複数のファイルが非圧縮形式で保存され、アーカイブへのファイルとフォルダーの追加がサポートされます。 Unix の TAR ユーティリティはコマンド ベースですが、作成されたファイルは、ほとんどすべてのオペレーティング システムのほとんどのファイル アーカイブ システムでサポートされています。 1979 年に AT&T ベル研究所によって最初に作成され、その後のバージョンが時間の経過とともに公開されました。
TAR ファイル形式
TAR は、開発者が参照できる完全な仕様を備えたオープン ファイル形式です。そのファイル構造は POSIX.1-1988 で標準化され、その後 POSIX.1-2001 で標準化されました。 tar によって作成されたデータ セットには、次のようなファイル システム パラメータに関する情報が保持されます。
- 名前 *タイムスタンプ *所有権
- ファイル アクセス許可
- ディレクトリ構成
Tar ファイルにはマジック ナンバーはありません。これには、各ブロックが BLOCKSIZE バイトの一連のブロックが含まれます。
アーカイブされた各ファイルは、ファイルを説明するヘッダー ブロックと、それに続くファイルの内容を示す 0 個以上のブロックによって表されます。アーカイブ ファイルの最後には、ファイルの終わりマーカーとして 2 進ゼロで埋められた 2 つの 512 バイト ブロックがあります。合理的なシステムは、アーカイブの最後にそのようなファイル終了マーカーを書き込む必要がありますが、アーカイブを読み取るときにそのようなブロックが存在すると想定してはなりません。特に、GNU tar は、遭遇しない場合は常に警告を出します。
ブロックは、物理 I/O 操作のためにブロックされる場合があります。 n ブロックの各レコード (n は、blocking-factor = 512-size オプションによって tar に設定されます) は、単一の「write()」操作で書き込まれます。磁気テープでは、このような書き込みの結果は単一のレコードになります。アーカイブを書き込むときは、ブロックの最後のレコードをフル サイズで書き込み、ゼロ ブロックの後のブロックにすべてゼロを含める必要があります。アーカイブを読み取るとき、合理的なシステムは、最後のレコードが残りのレコードよりも短いアーカイブ、またはゼロ ブロックの後にガベージ レコードを含むアーカイブを適切に処理する必要があります。
タールヘッダー
他のファイル ヘッダーと同様に、tar ファイル ヘッダー レコードにはファイルに関するメタデータが含まれており、次の表に示されています。
| フィールド オフセット | フィールド サイズ (バイト) | フィールド |
|---|---|---|
| 0 | 100 | ファイル名 |
| 100 | 8 | ファイルモード |
| 108 | 8 | 所有者の数値ユーザー ID |
| 116 | 8 | グループの数値ユーザー ID |
| 124 | 12 | バイト単位のファイル サイズ (8 進数) |
| 136 | 12 | 数値 Unix 時刻形式 (8 進数) での最終更新時刻 |
| 148 | 8 | ヘッダー レコードのチェックサム |
| 156 | 1 | リンク インジケータ (ファイル タイプ) |
| 157 | 100 | リンクされたファイルの名前 |
未使用のフィールドは NUL バイトで埋められます。ヘッダーは 257 バイトで構成され、512 バイトのレコードになるように NUL バイトが埋め込まれます。