0

在 Linux 中,我正在尝试使用以下任一命令生成包含全局扩展属性条目的未压缩 PAX 存档:

A) 指定 pax 选项(隐含--xattrs):

tar cvf file.tar folder/* --xattrs --pax-option=gname:=MyGroup,uname:=MyUser

B)指定 xattrs 支持(暗示--format=pax):

tar cvf file.tar folder/* --format=pax --pax-option=gname:=MyGroup,uname:=MyUser

这两个命令都成功生成了一个文件,但是当我用我的十六进制编辑器打开文件时,第一个条目的类型是“x”,而不是预期的“g”类型。

我究竟做错了什么?

环境:

  • Ubuntu 20.04 ARM64
  • tar工具版本:GNU tar 1.30

更多信息

tar工具手册指定--pax-option并是操作扩展属性的--xattrs参数,但没有提及有关创建全局扩展属性条目的任何内容。

如果我理解正确的话,Tar 规范指出 PAX 格式支持两种特殊类型的条目:

类型标志'x'

扩展属性条目。这是它描述的实际文件系统条目之前的条目。它允许用户在数据部分中指定任意数量的属性,使用 UTF8 字符串,格式为BYTES NAME=VALUE\n.

类型标志“g”

全局扩展属性条目。与“x”条目的特征相同,但不同之处在于只有一种:此条目位于档案的第 0 位,并描述适用于所有其余条目的属性。

来源
4

1 回答 1

0

答案在gnu文档中。我需要使用globexthdr前缀来表示我要创建一个全局扩展属性标题条目,如下所示:

tar cvf file.tar folder/* --format=pax --pax-option=globexthdr.gname:=MyGroup,globexthdr.uname:=MyUser

我用十六进制编辑器打开了生成的文件,我可以确认开头有一个“g”条目。

于 2021-12-14T15:51:44.133 回答