当 tar 被要求归档目录时,它是否为每个文件系统对象创建一个新的 inode?如果是,它如何查询和保存元数据?存储这个 inode 元数据的格式会不会因系统而异? tar 如何保持一致的输出?
答案1
tar
创建单个文件(索引节点)。档案的格式tar
是标准化的。
答案2
tar
创建一个存档,一个可以包含许多其他文件和对象的单个文件。因此,它仅包含一个相关的索引节点。
在 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 */
};