当前位置:  开发笔记 > 编程语言 > 正文

tar包中的PaxHeaders

如何解决《tar包中的PaxHeaders》经验,为你挑选了1个好方法。

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完全兼容?如果有,可以删除它们吗?

我有点迷茫,我必须解析它们或跳过这些标题后?

非常感谢 !



1> fuz..:

POSIX.1 2008定义了一种称为pax格式的ustar格式的扩展.它的新功能使用出台了专门的文件与typeflag设置为x一个扩展的pax头(会影响下一个文件),或者g全球pax头(影响所有进一步文件).这些标头允许归档程序在tar文件中存储其他属性,例如访问时间或扩展长度(以存储对于传统tar来说太大的文件).

此答案中的空间太受限制,无法复制完整的规范,请阅读POSIX以获取更多详细信息.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有