ホーム

OFF-SOFT.net

OFF-SOFT.net

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

Tarフォーマット

公開日| 2009年04月10日 | コメントはまだありません。
内容は未保障のため、参考程度にご覧ください。

---------------------------------------------------------------------------------
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ファイルを解凍する場合、
取り扱い可能なファイルタイプは、通常のファイルとディレクトリのみがほとんどで、
シンボリックリンクなど(通常のファイルとディレクトリ以外の情報)は、ほとんど無視される。
また、ハードリンクやスペシャルファイル、ボリュームラベル等も同様無視される。





コメント

コメントをどうぞ







  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ