
各メンバパートはヘッダパートとデータパートから成ります。ヘッダパートは基本的には512バイトの1ブロックですが、機能拡張版では複数のブロックから構成されるヘッダパートもあります。ヘッダパートには、メンバファイルの様々な属性 (サイズやパーミッション、所有者情報等) が書き込まれます。
一方データパートはメンバーファイルの内容がそのまま書き込まれます。データパートも512バイトのブロック単位で書き込まれますので、末尾のブロックには長さ合わせのためのフィラー(詰め物) データが書き込まれることがあります。実際の長さは、ヘッダブロックから取得できます。
次のメンバーファイルが存在する場合は、またヘッダパート、そしてファイルデータパートが続きます。
最後のメンバーファイルのファイル内容ブロックの次にはアーカイブ終端を示す特別なデータ (EOA; End-Of-Archive マーク。全バイトが 0x00 の連続する2ブロック (1024 バイト)) が付与されます。
また、アーカイブ生成時に指定されたブロック化係数によっては、EOA の後ろにサイズ合わせのためのデータが付与されることがあります。
なお、ブロック化したレコードバッファをクリアしないタイプの tar アーカイバの場合は、EOA の後に以前のファイルデータが残っていることがありますが、もちろんこの部分はメンバーデータとしては取り扱われません。
参考: GNU tar 1.19: Basic Tar Format
0 件のコメント:
コメントを投稿