tar가 디렉토리를 아카이브하라는 요청을 받으면 각 파일 시스템 객체에 대해 새 inode를 생성합니까? 그렇다면 메타데이터를 어떻게 쿼리하고 저장합니까? 이 inode 메타데이터를 저장하는 형식이 시스템마다 다르지 않습니까? tar는 어떻게 일관된 출력을 유지합니까?
답변1
tar
단일 파일(inode)을 생성합니다. 아카이브 형식은 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 */
};