如何检查文件是否为tar格式?
How to check whether a file is in tar format?
我想检查 tar 文件。
我对检查文件扩展名不感兴趣,但我需要更可靠的方法来检查。
例如,对于 zip 格式,我可以检查一些前导字节。但是tar个文件的方式是什么?
此致,
B
您可以检查文件的 header。
规格如下:http://www.gnu.org/software/tar/manual/html_node/Standard.html
检查偏移量 257 处的魔法字节。如果它们与 "ustar" 匹配,包括空终止符,则该文件可能是 tar。
参见:http://www.gnu.org/software/tar/manual/html_node/Standard.html
/* 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 */
};
#define TMAGIC "ustar" /* ustar and a null */
#define TMAGLEN 6
在shell中可以使用文件命令
file AFile.tar
AFile.tar: POSIX tar archive (GNU)
我想检查 tar 文件。 我对检查文件扩展名不感兴趣,但我需要更可靠的方法来检查。 例如,对于 zip 格式,我可以检查一些前导字节。但是tar个文件的方式是什么?
此致, B
您可以检查文件的 header。 规格如下:http://www.gnu.org/software/tar/manual/html_node/Standard.html
检查偏移量 257 处的魔法字节。如果它们与 "ustar" 匹配,包括空终止符,则该文件可能是 tar。
参见:http://www.gnu.org/software/tar/manual/html_node/Standard.html
/* 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 */
};
#define TMAGIC "ustar" /* ustar and a null */
#define TMAGLEN 6
在shell中可以使用文件命令
file AFile.tar
AFile.tar: POSIX tar archive (GNU)