tarはアーカイブのために新しいinodeを生成しますか?

tarはアーカイブのために新しいinodeを生成しますか?

tarがディレクトリをアーカイブするように要求された場合、各ファイルシステムオブジェクトに対して新しいinodeを作成しますか?それでは、メタデータをどのように照会して保存しますか?このinodeメタデータを保存する形式はシステムによって異なりますか? tarはどのように一貫した出力を維持しますか?

答え1

tar単一ファイル(inode)を作成します。アーカイブ形式がtar標準化されています。

答え2

tar他の多くのファイルやオブジェクトを含めることができる単一のファイルであるアーカイブを作成します。したがって、関連するインデックスノードが1つだけ含まれます。

tarアーカイブでは、tar各ファイルのメタデータがヘッダブロックに順次格納され、ファイルの内容がデータブロックに格納されます。このヘッダブロックには通常、inodeに関する情報が含まれていますが、実際にメタデータを保存する方法を決定することは、ソースファイルシステムとターゲットファイルシステムに委ねられます。

ヘッダーブロックには以下が含まれます(使用可能な場合)。

/* tar Header Block, from POSIX 1003.1-1990.  */  
/* POSIX header.  */

struct posix_header
{                              /* byte offset */
  char name[100];               /*   0 */
  char mode[8];                 /* 100 */
  char uid[8];                  /* 108 */
  char gid[8];                  /* 116 */
  char size[12];                /* 124 */
  char mtime[12];               /* 136 */
  char chksum[8];               /* 148 */
  char typeflag;                /* 156 */
  char linkname[100];           /* 157 */
  char magic[6];                /* 257 */
  char version[2];              /* 263 */
  char uname[32];               /* 265 */
  char gname[32];               /* 297 */
  char devmajor[8];             /* 329 */
  char devminor[8];             /* 337 */
  char prefix[155];             /* 345 */
                                /* 500 */
};

関連情報