我tar
在C中做的很像,我遇到了问题.我只想归档和解压缩文件和diretory,所以我操作这个命令:tar -cvf NAME.tar FILE1 [FILE2...]
现在我正在尝试获取POSIX
此存档的标题:
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 */ }; int main() { struct posix_header header; int fd; if ((fd = open("./obj.tar", O_RDONLY)) < 2) //open tarball return (1); read(fd, &header, 500); //fill struct printf("%s\n", header.name); close(fd); }
但输出总是如此./PaxHeaders.NUMBER/FILE_NAME
.当我尝试在编辑器中打开存档时,它会在每个文件之前显示一个PaxHeader.
什么是PaxHeaders
?是否添加了标题以与Pax完全兼容?如果有,可以删除它们吗?
我有点迷茫,我必须解析它们或跳过这些标题后?
非常感谢 !
POSIX.1 2008定义了一种称为pax格式的ustar格式的扩展.它的新功能使用出台了专门的文件与typeflag
设置为x
一个扩展的pax头(会影响下一个文件),或者g
为全球pax头(影响所有进一步文件).这些标头允许归档程序在tar文件中存储其他属性,例如访问时间或扩展长度(以存储对于传统tar来说太大的文件).
此答案中的空间太受限制,无法复制完整的规范,请阅读POSIX以获取更多详细信息.