|
|
ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。
内容は未保障のため、参考程度にご覧ください。
---------------------------------------------------------------------------------
TAR format
---------------------------------------------------------------------------------
Offset Length Contents
0 100 bytes File name ('\0' terminated, 99 maxmum length)
100 8 bytes File mode (in octal ascii)
108 8 bytes User ID (in octal ascii)
116 8 bytes Group ID (in octal ascii)
124 12 bytes File size (s) (in octal ascii)
136 12 bytes Modify time (in octal ascii)
148 8 bytes Header checksum (in octal ascii)
156 1 bytes Link flag
157 100 bytes Linkname ('\0' terminated, 99 maxmum length)
257 8 bytes Magic ("ustar \0")
265 32 bytes User name ('\0' terminated, 31 maxmum length)
297 32 bytes Group name ('\0' terminated, 31 maxmum length)
329 8 bytes Major device ID (in octal ascii)
337 8 bytes Minor device ID (in octal ascii)
345 167 bytes Padding
512 (s+p)bytes File contents (s+p) := (((s) + 511) & ~511), round up to 512 bytes
Checksum:
int i, sum;
char* header = tar_header_pointer;
sum = 0;
for(i = 0; i < 512; i++)
sum += 0xFF & header[i];
/* The linkflag defines the type of file */
#define LF_OLDNORMAL '\0' /* Normal disk file, Unix compatible */
#define LF_NORMAL '0' /* Normal disk file */
#define LF_LINK '1' /* Link to previously dumped file */
#define LF_SYMLINK '2' /* Symbolic link */
#define LF_CHR '3' /* Character special file */
#define LF_BLK '4' /* Block special file */
#define LF_DIR '5' /* Directory */
#define LF_FIFO '6' /* FIFO special file */
#define LF_CONTIG '7' /* Contiguous file */
+---------------------------------+
|header(ヘッダ部分)512bytes固定 |
+---------------------------------+
|data(データ部分)512bytesの倍数 |
+---------------------------------+
| : |
| header+dataの繰り返し |
| : |
+---------------------------------+
|end of mark 1024bytes |
+---------------------------------+
* 終端は1024バイトの00埋め
(注意)
ヘッダ情報は、基本的にASCIIの文字列で設定される。
数値は8進数の文字列として設定される
---------------------------------------------------
日本語の名称
---------------------------------------------------
ファイル名 : 100
属性 : 8
ユーザID : 8
グループID : 8
ファイルサイズ : 12
更新日時 : 12
チェックサム : 8
タイプ : 1
リンク先ファイル名 : 100
マジックコード・バージョン番号 : 8
ユーザ名 : 32
グループ名 : 32
メジャーデバイス名 : 8
マイナーデバイス名 : 8
パディング : 167
---------------------------------------------------
日本語の解説
---------------------------------------------------
ファイル名 : ASCIIまたはSJISで100バイト(パス名含む)
ユーザID/グループID :“0”はルートをあらわす
更新日時 : ustat()で得られる最終更新日時の値を8進数文字列であらわしたもの
チェックサム : ヘッダ512バイト分のチェックサム
マジックコード/バージョン番号 :“ustar\0” + バージョン番号 “00”
ユーザ名/グループ名 : null終端のASCII文字列
メジャーデバイス番号/マイナーデバイス番号
-- タイプが[3]または[4]の場合のみ使用
属性 :(UNIXの属性と同じ)/16ビット分を8進数の文字列として登録される
ビット位置
0,1,2 : 他人の 実行属性, 書き込み属性 , 読み込み属性
3,4,5 : グループの 実行属性, 書き込み属性 , 読み込み属性
6,7,8 : オーナーの 実行属性, 書き込み属性 , 読み込み属性
9 : Sticky bit
10 : Set GID
11 : Set UID
12 : パイプ
13 : キャラクタ型スペシャルファイル
14 : ディレクトリ
15 : 通常ファイル
タイプ:
文字
0 : 通常ファイル
1 : リンク
2 : シンボリックリンク
3 : キャラクタ型デバイス
4 : ブロック型デバイス
5 : ディレクトリ
6 : FIFOスペシャルファイル
7 : コンティギアス?(Contiguous)ファイル
A-Z : 予約
---------------------------------------------------
tarのフォーマットの解説
---------------------------------------------------
tar ファイルには主として以下のような複数のフォーマットがある。
* V7 (Version 7 Unix)
* 旧 gnu
* 新 gnu
* POSIX.1-1988 (ustar)
* POSIX.1-2001 (posix)
これらのうち、もっとも基本的なものは V7 であり、それ以外のものは V7 のヘッダフォーマットを拡張するか、
全く異なる構造になっている。
通常のWinZIPなどでtarファイルを解凍する場合、
取り扱い可能なファイルタイプは、通常のファイルとディレクトリのみがほとんどで、
シンボリックリンクなど(通常のファイルとディレクトリ以外の情報)は、ほとんど無視される。
また、ハードリンクやスペシャルファイル、ボリュームラベル等も同様無視される。
コメントをどうぞ