TAR(5) — NEWS-OS Programmer’s Manual
名称
tar − テープアーカイブファイルのフォーマット
解説
tar (テープアーカイブコマンド)は、複数のファイルを、持ち運びに 便利な媒体内の 1つのファイルにまとめてダンプします。
tar テープすなわちファイルは、一連のブロックです。 それぞれのブロックは TBLOCK のサイズになります。 テープ上のファイルは、 そのファイルを説明するヘッダブロックによって表現されます。 ヘッダブロックの後には、そのファイルの内容を表すゼロ個あるいはそれ以上 のブロックが続きます。 テープの終わりには、行末の標識として 2進数のゼロが 2つのブロックに入れられます。
それぞれのブロックは、物理的な I/O 動作によってグループ分けされます。 n 個のブロックから成るグループは、1回のシステムコールで書き込まれます (ここで、 n は、 tar(1) コマンド行における b キー文字によって設定されます。デフォルトのブロック数は 20 個です)。 9トラックのテープにおいては、 この書き込みの結果が 1つのテープ記録になります。 最後のグループは常にフルサイズで書き込まれるため、 2つのゼロブロックの後に続くブロックにはランダムデータが含まれます。 最初の読み取りの際には、指定したグループサイズあるいは デフォルトグループサイズが使用されますが、 その読み取りがテープブロックのフルサイズよりも低い値を返した場合、 それ以降の読み取りの際には、その小さくなったブロックサイズが 使用されます。
ヘッダブロックは次のようになります。
#define TBLOCK 512
#define NAMSIZ 100
union hblock {
char dummy[TBLOCK];
struct header {
char name[NAMSIZ];
char mode[8];
char uid[8];
char gid[8];
char size[12];
char mtime[12];
char chksum[8];
char linkflag;
char linkname[NAMSIZ];
} dbuf;
};
name (名称)はナル文字で終了する文字列です。 他のフィールドは 8進数の ASCII コードで、残りはゼロが詰められます。 size (サイズ)および mtime フィールドを除いて、(幅 w の)各フィールドは、w から 2を引いた 個数の数字、スペース、ナル文字を含みます。 size および mitime フィールドは最後にナル文字を含みません。また、 chksum フィールドでは、ナル文字のあとにスペースが続きます。 name は tar コマンド行上で指定されたファイルの名称です。 ダンプされるファイルは、 コマンド行で指定されたディレクトリ内に存在していたため、 プレフィックスとしてそのディレクトリ名を、サフィックスとして /filename を持ちます。 mode (モード)は、ファイルモードであり、最上位ビットがマスクされています。
uid および gid は、そのファイルを所有するユーザおよびグループ番号です。 size (サイズ)はそのファイルのバイト単位のサイズです。 このフィールドがゼロに設定されている場合には、 リンクおよびシンボルリンクがダンプされます。 mtime は、ファイルがダンプされた時点におけるファイルの日時です。 chksum は、ヘッダブロック内のすべてのバイトの合計を表す ASCII コード の 8進値です。チェックサムが計算される際には、 chksum フィールドは、その値がすべて空白であるとして扱われます。 linkflag は、ファイルが “通常の”ファイルあるいは特殊ファイルである場合 には NULL になり、ハードリンクである場合には ASCII コード‘1’に、 シンボルリンクである場合には ASCII コード‘2’になります。 リンク先の名称がある場合、それは linkname 内に収められ、うしろにナル文字が付けられます。 ヘッダの未使用フィールドは 2進数の 0 になります (これらもチェックサムに含まれます)。
特定の i ノード番号が最初にダンプされる時には、 レギュラーファイルとしてダンプされます。 2回目以降には、リンクとしてダンプされます。 リンクエントリを検索しても、リンク先のファイルが見つからなかった場合には、 エラーメッセージが表示されます 。その場合、テープを手動で走査し直して、リンク先のファイル を復活させる必要があります。
ヘッダの符号化方式は、マシン間で移植できるように設計されています。
関連事項
バグ
NAMSIZ よりも長い名称あるいはリンク名を指定すると、 エラーが発生し、ダンプは行えません。
NEWS-OSRelease 4.1C