説明
cpio の -c オプションが使われなかったときの header 構造体は以下のとおりです ( cpio(1) を参照)。
struct {
short c_magic,
c_dev;
ushort c_ino,
c_mode,
c_uid,
c_gid;
short c_nlink,
c_rdev,
c_mtime[2],
c_namesize,
c_filesize[2];
char c_name[c_namesize rounded to word];
} Hdr;
cpio -c オプションが使われたときの header 情報は以下のとおりです。
sscanf(Chdr,"%6ho%6ho%6ho%6ho%6ho%6ho%6ho%6ho%11lo%6ho%11lo",
&Hdr.c_magic,&Hdr.c_dev,&Hdr.c_ino,&Hdr.c_mode,
&Hdr.c_uid,&Hdr.c_gid,&Hdr.c_nlink,&Hdr.c_rdev,
&Longtime,&Hdr.c_namesize,&Longfile);
Longtime および Longfile は、それぞれ Hdr.c_mtime および Hdr.c_filesize と同じです。
各ファイルの内容は、そのファイルを記述する他の項目と一緒に記録されます。
どの場合も c_magic は定数 070707(8 進数) です。 c_dev から c_mtime までは stat(2) で説明されているのと同じ意味です。
null で終了するパス名 c_name の、null バイトを含んだ長さは、 c_namesize で与えられています。
archive の最後のレコードは、常に名前が TRAILER!!! です。
ディレクトリと最後のレコードは、 c_filesize が 0 で記録されます。
c_dev および c_ino が、 stat() の結果と一致しない場合があります。
しかし、その値は常に、 アーカイブの中の 2 つのファイルがお互いにリンクされているかどうかを知るには十分なものになっています。
HP-UX cpio ( -x オプションを使用) によってデバイス
スペシャルファイルがアーカイブされるときには、 c_rdev は、アーカイブの書き込みを行う処理系に依存するマジック定数です。 H_rdev はデバイスファイルに、
HP-UX 32 ビットデバイス指定子としてフラグを立て、 c_filesize には、その 32 ビットデバイス指定子が入ります ( stat(2) を参照)。 -x オプションがないときは、
スペシャルファイルはアーカイブも復元もされません。 HP-UX デバイス
スペシャルファイルでないものが復元されることはありません。
参照
cpio(1), find(1), stat(2)
標準準拠
cpio: XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1