tar.h 文件

用途

包含 焦油 归档头中使用的标志的定义。

描述

/usr/include/tar.h 文件包含在typeflagmode焦油 归档头块的字段。 该文件还提供必需 POSIX 条目的值。

tar 归档头块

使用 焦油 命令归档的每个文件都由描述该文件的头块表示,后跟零个或多个提供该文件的内容的块。 归档结束指示符由两个用二进制零填充的块组成。 每个块都是 512 字节的固定大小。

对于物理 I/O 操作,可以对块进行分组,并且可以使用单个 子例程操作来编写组。 在磁带上,此写操作的结果是单条磁带记录。 最后一条记录始终是完整的 512 字节。 归档结束后的块零包含未定义的数据。

下表中显示了标题块结构。 所有长度和偏移量都以十进制表示。

表 1. 头块结构
字段名称 结构
name
偏移:
0
长度 (以字节计):
100
内容:
不带/(斜杠) 的文件名
mode
偏移:
100
长度 (以字节计):
8
内容:
文件方式
uid
偏移:
108
长度 (以字节计):
maximpl_login_name_max
内容:
用户标识
gid
偏移:
116
长度 (以字节计):
maximpl_login_name_max
内容:
组标识
size
偏移:
124
长度 (以字节计):
12
内容:
按字节计的大小
mtime
偏移:
136
长度 (以字节计):
12
内容:
最新修改时间
cksum
偏移:
148
长度 (以字节计):
8
内容:
文件和头校验和
typeflag
偏移:
156
长度 (以字节计):
1
内容:
文件类型
linkname
偏移:
157
长度 (以字节计):
100
内容:
链接的路径名或文件名
magic
偏移:
257
长度 (以字节计):
6
内容:
tar 的格式表示
version
偏移:
263
长度 (以字节计):
3
内容:
tar 的版本表示
uname
偏移:
265
长度 (以字节计):
32
内容:
用户名
gname
偏移:
297
长度 (以字节计):
32
内容:
组名
devmajor
偏移:
329
长度 (以字节计):
8
内容:
主要设备表示
devminor
偏移:
337
长度 (以字节计):
8
内容:
次要设备表示
prefix
偏移:
345
长度 (以字节计):
155
内容:
不带尾部斜杠的路径名

仅当从 POSIX 可移植文件名字符集中选择字符,或者在系统之间使用同一扩展字符集时,才会保留名称。 在读操作期间,仅当可以使用 统计奇迪尔弗纳特尔奥彭迪尔 子例程来访问原始文件时,才可以创建文件。

头块字段

头块中的每个字段以及归档介质上的每个字符都是连续的。 字段之间不存在填充。 以下是有关特定字段及其值的更多信息:

name
该文件的路径名是使用此字段创建的,或者通过使用此字段来与prefix。 如果prefix字段,那么该文件的名称为prefix/name除非每个字符都是非空的,否则此字段以 null 结束。
mode
为文件许可权提供 9 位 3 为 SUID, SGID, 和 SVTX 方式提供 3 位。 此字段的所有值都以八进制表示。 在读操作期间,如果用户不具有相等 (或更高) 的许可权,或者如果不支持这些方式,那么将忽略指定的方式位。 数字字段以空格和空字节为结尾。 tar.h 文件包含此字段的以下可能值:
标志 八进制 描述
TSUID 04000 执行时设置用户标识。
TSGID 02000 执行时设置组标识。
TSVTX 01000 已保留。
00400 由所有者读取。
图文 00200 由所有者写入。
TUEXEC 00100 按所有者执行或搜索。
TGREAD 00040 按组读取。
TGWRITE 00020 按组写入。
TGEXEC 00010 按组执行或搜索。
00004 由他人阅读。
托莱 00002 由他人撰写。
TOEXEC 00001 由其他用户执行或搜索。
uid
除非具有适当特权的用户复原文件,否则从相应的归档字段中抽取。 在此情况下,将改为从密码和组文件中抽取字段值。 数字字段以空格和空字节为结尾。
gid
除非具有适当特权的用户复原文件,否则从相应的归档字段中抽取。 在此情况下,将改为从密码和组文件中抽取字段值。 数字字段以空格和空字节为结尾。
size
值为 0 时, typeflag字段设置为 LNKTYPE。 该字段仅以空格终止。
mtime
值是从 统计 子例程的修改时间字段获取的。 该字段仅以空格终止。
chksum
在计算时,头结构中所有字节的总和都被视为空格。 将每个无符号字节添加到一个无符号整数 0 初始化为 0) ,精度至少为 17 位。 数字字段以空格和空字节为结尾。
typeflag
tar.h 文件包含此字段的以下可能值:
标志 描述
区域类型 '0' 常规文件。
区域类型 '\0' 常规文件。
LNKTYPE '1' 链接。
SYMTYPE '2' 已保留。
CHRTYPE '3' 字符特殊。
BLKTYPE '4' 特殊块。
DIRTYPE '5' 目录。 在这种情况下,size字段没有意义。
FIFOTYPE '6' FIFO 特殊。 对 FIFO 文件进行归档将其存在,而不是对内容进行归档。
内容类型 '7' 已保留。

如果使用其他值,那么会将该文件抽取为常规文件,并向标准错误输出发出警告。 数字字段以空格和空字节为结尾。

LNKTYPE 标志表示指向先前归档的任何类型的另一个文件的链接。 此类链接到文件由具有相同设备和文件序列号的每个文件进行标识。 链接目标名称在以下位置指定:linkname字段,包括尾部空字节。

linkname
不使用该prefix字段以生成路径名。 如果路径名或linkname值过长,将返回错误消息并取消对该文件或目录执行的任何操作。 除非每个字符都非空,否则此字段将以 null 结束。
magic
包含 TMAGY 值,反映扩展的 焦油 归档格式。 在这种情况下,unamegname字段将包含文件所有者和文件组的 ASCII 表示法。 如果某个文件由具有适当特权的用户复原,那么uidgid从密码和组文件中抽取字段 (而不是相应的归档字段)。 此字段以 null 结束。
version
表示用于对文件进行归档的 焦油 命令的版本。 该字段仅以空格终止。
uname
包含文件所有者的 ASCII 表示法。 此字段以 null 结束。
gname
包含文件组的 ASCII 表示法。 此字段以 null 结束。
devmajor
包含设备主号码。 已以空格和空字节终止。
devminor
包含设备次编号。 已以空格和空字节终止。
prefix
如果此字段为非空,那么将使用以下命令创建文件的路径名:prefix/name值。 除非每个字符都非空,否则以 null 结束。