============================================================ TAR32.DLL フォーマット説明ファイル by 吉岡 恒夫 email:QWF00133@niftyserve.or.jp date: 1998/05/31 ============================================================ (注)ソースコードなどを元に調べたものです。ひょっとしたら間違い があるかもしれません。 目次: 1)Tar形式のフォーマット 2)Tar形式ヘッダー 3)GZIP形式 ------------------------------------------------------------------------------ 1)Tar形式のフォーマット Tar形式は以下のようにヘッダーとデータが交互に存在します。ヘッダーは512byteです。データ領域は512byteの倍数になるように0で詰められます。 ---------- ヘッダー1 ---------- データ1 ---------- ヘッダー2 ---------- データ2 ---------- ・・・ ----------------------------------------------------------------------------- 2)Tar形式ヘッダー Tar形式のヘッダーは以下のような512byteの構造体です。エンディアンの影響を受けないように、2byte以上の数字は8進数文字列として格納されています。 1:ファイル名 100byte 2:属性 8byte 3:ユーザーID 8byte 4:グループID 8byte 5:ファイルサイズ 12byte 6:更新日時 12byte 7:チェックサム 8byte 8:タイプ 1byte 9:リンク先ファイル名 100byte 10:マジックコード/バージョン番号 8byte(6byte+2byte) 11:ユーザ名 32byte 12:グループ名 32byte 13:メジャーデバイス番号 8byte 14:マイナーデバイス番号 8byte 以下GNU Tar形式 15:最終アクセス時刻 12byte 16:ファイル作成時刻 12byte 17:オフセット 12byte 1:ファイル名 ファイル名です。ファイル名が100byteを超える場合はここには、"././@LongLink"が入ります。この場合、実際のファイル名の長さは「5:ファイルサイズ」に設定され、実際のファイル名はデータ領域に入ります。 2:属性 ファイルの属性(16bit)が8進数の文字列として格納されます。各ビットの意味は以下のとおりです。 15bit 通常のファイル 14bit ディレクトリ 13bit キャラクター型スペシャルファイル 12bit パイプ 11bit set UID 10bit set GID 9bit sticky bit 8bit オーナーの読み込み属性 7bit オーナーの書き込み属性 6bit オーナーの実行属性 5bit グループの読み込み属性 4bit グループの書き込み属性 3bit グループの実行属性 2bit 他人の読み込み属性 1bit 他人の書き込み属性 0bit 他人の実行属性 3:ユーザID ファイル所有者のユーザID。0はrootをあらわす。 4:グループID ファイル所有者のグループID。0はrootをあらわす。 5:ファイルサイズ ファイルサイズを8進数の文字列であらわす。 6:更新日時 更新日時を8進数文字列であらわす。 7:チェックサム ヘッダー(512byte)の16bitチェックサム。「7:チェックサム」自身はスペース(0x20)8文字で埋まっていると考えて計算する。 8:タイプ 以下のいずれかが設定される。 '0'(0x30) 通常のファイル 0 通常のファイル(V7フォーマット) '1'(0x31) link to previously dumped file '2'(0x32) シンボリックリンク '3'(0x33) キャラクタ型デバイス '4'(0x34) ブロック型デバイス '5'(0x35) ディレクトリ '6'(0x36) FIFOスペシャルファイル '7'(0x37) contiguous file 'D' This is dir entry that contains the names of files that were in the dir at the time the dump was made. 'K' データ領域にリンク先ファイル名が格納されている。 'L' データ領域にファイル名が格納されている。 'M' This is the continuation of a file that began on another volume.(マルチボリュームの2つめ以降?) 'N' For storing filenames that didn't fit in 100 charactors. 'S' This is for sparse files. 'V' This file is a tape/volume header. Ignore it on extraction.(マルチボリュームの1つめ?) 9:リンク先ファイル名 「8:タイプ」が'1'や'2'(リンク)のときにリンク先ファイル名が設定されます。 10:マジックコード/バージョン番号 最初の6byteに"ustar"が、最後の2byteにバージョン番号"00"が入ります。GNU Tarの場合、8byteで"ustar "が入ります。 11:ユーザ名 ファイル所有者のユーザ名文字列が入ります。 12:グループ名 ファイル所有者のグループ名文字列が入ります。 13:メジャーデバイス番号 タイプが'3'か'4'(デバイスファイル)のときに設定される。 14:マイナーデバイス番号 タイプが'3'か'4'(デバイスファイル)のときに設定される。 15:最終アクセス時刻 16:ファイル作成時刻 17:オフセット ? --------------------------------------------------------------------------- 3)GZIP形式 GZIP形式は以下のような構造になっています。数値はリトル・エンディアン(大きい桁が左)であらわされます。 1:マジックナンバー 2byte 0x1f, 0x8b(\037, \213) 2:圧縮法 1byte deflate: 8(0x08) 他は予約 3:フラグ 1byte bit0: テキストファイル bit1: マルチパートgzipファイルの2つめ以降 bit2: 特別な領域が存在 bit3: ファイル名が存在 bit4: コメントが存在 bit5: ファイルは暗号化されている 4:最終更新日時 4byte Unix形式。ファイルでない場合は圧縮した時刻。 5:拡張フラグ 1byte 6:ファイルを作成したOSの種類 1byte MSDOS: 0x00 OS/2: 0x06 Win32: 0x0b VAX/VMS:0x02 AMIGA: 0x01 ATARI: 0x05 MACOS: 0x07 Prime/PRIMOS: 0x0F TOPS20: 0x0a UNIX: 0x03 7:オプションによるパート番号(2番目のパートが1である) 2byte又はなし フラグのbit1がセットされているときのみ存在する。 8:オプションによる特別な領域の長さ 2byte又はなし フラグのbit2がセットされているときのみ存在する。 9:オプションによる特別な領域 ?byte又はなし 「8:オプションによる特別な領域の長さ」だけ存在する。 10:オプションによる元のファイル名 ?byte又はなし フラグのbit3がセットされているときのみ存在する。 NULL文字(0x00)で終わっている。 11:オプションによる元のファイル名のコメント ?byte又はなし フラグのbit4がセットされているときのみ存在する。 NULL文字(0x00)で終わっている。 12:オプションによる暗号化ヘッダ 12byte又はなし フラグのbit5がセットされているときのみ存在する。 13:圧縮データ ?byte 14:32ビットCRC 4byte 15:ファイルサイズ 4byte 2^32以上のときは2^32で割ったあまり。 -------------------------------------------------------------------------