Quando o tar é solicitado a arquivar um diretório, ele cria um novo inode para cada objeto do sistema de arquivos? Se sim, como consulta e salva os metadados? O formato de armazenamento desses metadados de inode não variará de sistema para sistema? Como o tar mantém uma saída consistente?
Responder1
tar
cria um único arquivo (um inode). O formato de um tar
arquivo é padronizado.
Responder2
tar
cria um arquivo, um único arquivo que pode conter muitos outros arquivos e objetos. Como tal, consistirá apenas em um inode relevante.
No arquivo tar tar
armazena sequencialmente os metadados de cada arquivo em um bloco de cabeçalho seguido pelo conteúdo do arquivo em blocos de dados. Esse bloco de cabeçalho contém as informações que você normalmente associaria a um inode, mas é deixado para os sistemas de arquivos de origem e de destino como eles realmente armazenam metadados.
O bloco de cabeçalho contém (se disponível):
/* 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 */
};