Когда tar просят архивировать каталог, создает ли он новый inode для каждого объекта файловой системы? Если да, то как он запрашивает и сохраняет метаданные? Не будет ли формат хранения этих метаданных inode отличаться от системы к системе? Как tar поддерживает согласованный вывод?
решение1
tar
создает один файл (инод). Формат архива tar
стандартизирован.
решение2
tar
создает архив, один файл, который может содержать много других файлов и объектов. Таким образом, он будет состоять только из одного соответствующего inode.
В архиве 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 */
};