抽取、写以及列出归档文件成员;复制文件和目录层次结构。
pax [ -c ] [ -d ] [ -n ] [ -v ] [ -H | -L ] [ -f Archive ] [ -s ReplacementString ... ] [ -x Format ] [ -o Options ] [ Pattern ... ]
pax -r [ -c ] [ -d ] [ -i ] [ -k ] [ -n ] [ -u ] [ -v ] [ -H | -L ] [ -f Archive ] [ -o Options ] [ -p String ... ] [ -s ReplacementString ... ] [ -x Format ] [ Pattern ... ]
pax -w [ -d ] [ -i ] [ -t ] [ -u ] [ -v ] [ -X ] [ -H | -L ] [ -b Blocking ] [ [ -a ] -f Archive ] [ -o Options ] [ -s ReplacementString ... ] [ -x Format ] [ File ... ]
pax -r -w [ -d ] [ -i ] [ -k ] [ -l ] [ -n ] [ -t ] [ -u ] [ -v ] [ -X ] [ -H | -L ] [ -p String ... ] [ -o Options ] [ -s ReplacementString ... ] [ -x Format ] [ File ... ] Directory
pax 命令抽取以及写归档文件的成员文件; 写归档的成员文件列表;以及复制目录层次结构。 -r 和 -w 标志指定了归档操作的类型。
注:pax 主动疏松正在恢复的文件。 如果文件有植入了 NULL 值的块间对齐和大小特定的区域,pax 不会为那些文件系统块分配物理空间。 文件的大小(以字节计)保持不变,但在文件系统内实际占用的空间只是非 NULL 区域。
当 -r 和 -w 标志均未指定时,pax 命令列出所有读取自标准输入的归档文件的成员文件。 如果指定 Pattern 参数,只有路径名匹配指定模式的成员文件写到标准输出。 如果指定的文件是一个目录,目录包含的文件层次结构也会写出。 当 -r 和 -w 标志均未指定时,可以指定 -c、-d、-f、-n、-s 和 -v 标志以及 Pattern 参数。
当指定了 -r 标志而未指定 -w 标志时,pax 命令抽取读取自标准输入的归档文件的所有成员文件。 如果指定了 Pattern 参数,只有路径名匹配指定模式的成员文件写到标准输出。 如果指定的文件是一个目录,目录包含的文件层次结构也会抽取。 -r 标志可以与 -c、-d、-f、-i、-k、-n、-s、-u 和 -v 标志,以及 Pattern 参数一起指定。
抽取出的文件的存取和修改时间与归档文件相同。 抽取文件的文件方式与它们归档时相同,除非受到用户的缺省文件创建方式(umask)的影响。抽取文件的 S_ISUID 和 S_ISGID 位被清除。
如果需要中间目录来抽取一个归档成员,pax 命令创建目录,将其存取许可权设为 S_IRWXU、S_IRWXG 和 S_IRWXO 掩码值的按位或(OR)。
如果选定的归档格式支持已链接文件的规范,当抽取归档文件后如果这些文件不能链接,就会产生错误。
当指定了 -w 标志而未指定 -r 标志时,pax 命令将 File 参数指定文件的内容以归档格式写到标准输出。 如果未指定 File 参数,从标准输入读取要复制的文件列表(每行一个文件)。 当 File 参数指定了一个目录时,将写目录包含的所有文件。 -w 标志可以与 -a、-b、-d、-f、-i、-o、-s、-t、-u、-v、-x 和 -X 标志,以及 File 参数一起指定。
当指定超过 100 个字符的 United States Tape Archiver(USTAR)格式的路径名时,要记住路径名由前缀缓冲区、一个 /(斜线)和名称缓冲区组成。 前缀缓冲区最大可以有 155 个字符,名称缓冲区最大可容纳 100 个字符。 如果路径名无法以斜线分割成这两部分,就不能归档。 这个限制是由于 tar 归档文件头部分的结构,而且必须维护使其符合标准和向下兼容。
当一同指定 -r 和 -w 标志时,pax 命令将由 File 参数指定的文件复制到 Directory 参数指定的目的地目录中。 如果没有指定文件,从标准输入读取要复制的文件列表(每行一个文件)。 如果指定的文件是一个目录,目录包含的文件层次结构也会复制。 -r 和 -w 标志可以与 -d、-i、-k、-l、-o、-p、-n、-s、-t、-u、-v 和 -X 标志以及 File 参数一起指定。Directory 参数必须指定。
复制的文件与将它们写入到归档文件然后抽取出来一样,除非源文件和复制的文件之间可能有硬链接。
使用 -o 标志根据关“键字-值”对来修改归档算法。 “关键字-值”对必须遵循正确的归档格式。 有效关键字及其行为的列表在后继的 -o 标志的描述中给出。
在读取或复制方式下,如果需要中间目录来抽取归档成员,pax 执行与 mkdir() 子例程相同的操作,中间目录作为路径参数,值 S_IRWXU 作为方式参数。
如果没有任何指定的模式或文件操作数与至少一个文件或归档成员匹配,pax 为每个不匹配的模式或文件操作数写一条诊断消息到标准错误,并以错误状态退出。
遍历目录过程中,pax 将检测无限循环;例如,进入一个作为最后访问文件的祖先的先前访问的目录。 在检测到无限循环时,pax 将诊断消息写到标准错误然后终止。
当 pax 处于读取方式或列表方式,使用 -x pax 归档格式和文件名、链接名、所有者名或任何其它扩展的头记录中的字段,这些字段无法从 pax UTF8 编码集格式转换到当前编码集和语言环境,pax 写诊断消息到标准错误,如 -o invalid= 选项所描述的那样处理文件,然后处理归档中的下一个文件。
-o Options(续) |
exthdr.name=string(仅适用于 -x pax 格式。) 该关键字允许用户控制用于扩展首记录的写进 ustar 头块的名称。名称是做过下列字符替换后 string 的内容:
其它任何 string 中的 % 字符产生未定义的结果。 如果该“关键字-值”对未在 -o Options 列表中指定,名称的缺省值是: %d/PaxHeaders/%f globexthdr.name=string(仅适用于 -x pax 格式。) 当带有适当选项以写或复制方式使用时,pax 创建全局扩展头记录,其 ustar 头块被 pax 的先前版本按照常规文件处理。 该关键字允许用户控制用于扩展头记录的写进 ustar 头块的名称。 名称是做过下列字符替换后 string 的内容:
其它任何 string 中的 % 字符产生未定义的结果。 如果该“关键字-值”对未在-o Options 列表中指定,名称的缺省值是 $TMPDIR/GlobalHead.%n $TMPDIR 或者是 TMPDIR 环境变量的值,或者是 /tmp,如果 TMPDIR 取消设置。 invalid=action(仅适用于 -x pax 格式。) 该关键字允许用户控制在扩展头记录中遇到如下值时 pax 采取的操作:
|
-o Options(续) |
pax 标识这些无效值:
支持这些 action 参数的相互排斥的值:
linkdata(仅适用于 -x pax 格式。) 在写方式下,pax 将文件内容写入归档,即使文件仅是到一个内容已写入归档的文件的硬链接。 |
-o Options(续) |
listopt=format(适用于所有文件格式。) 该关键字指定当 -v 选项在列表方式中指定时,产生的目录的输出格式。 为避免多义性,该“关键字-值”对应该用作跟在 -o 标志后的唯一或最终“关键字- 值”对;可选参数剩余的所有字符被认为是格式字符串的一部分。 如果指定了多个 -o listopt=format 选项,格式字符串被认为是单独的、连接的字符串(以命令行顺序评估)。 请参考列表方式格式规范 一节以获得更多信息。 times(仅适用于 -x pax 格式。) 在用于写或复制方式的时候,pax 包含每个文件的 atime、ctime 和 mtime 扩展头记录。 |
(仅适用于 -x pax 格式。)
如果指定了 -x pax 格式,那么以下列表中定义的任何关键字和值 可以以下面两种方式之一用作 -o 标志的参数:
keyword=value
在用于写或复制方式的时候,这些“关键字-值”对写到新归档中的全局扩展头记录中。 在用于读取或列出方式的时候,这些“关键字-值”对就像它们存在于正在读取的归档的全局扩展头记录中一样起作用。 在这两种情况下,给定的值适用于所有的单独扩展头记录中没有赋予指定关键字值的文件。
keyword:=value
在用于写或复制方式的时候,这些“关键字-值”对写到新归档中每个文件的扩展头记录中。 在用于读取或列出方式的时候,这些“关键字-值”对就像它们存在于正在读取的归档的全局扩展头记录中一样起作用。 在这两种情况下,给定的值覆盖了全局或指定文件的扩展头记录中的指定关键字的任何值。
atime
以下文件的文件存取时间,等于文件的 stat 结构的 st_atime 成员的值。
charset
用于编码以下文件中的数据的字符集名称。 定义此表中的条目来参考已知的标准:
值 | 正式标准 |
『ISO-IR 646 1990』 | ISO/IEC 646 IRV |
『ISO-IR 8859 1 1987』 | ISO 8859-1 |
『ISO-IR 8859 2 1987』 | ISO 8859-2 |
『ISO-IR 10646 1993』 | ISO/IEC 10646 |
『ISO-IR 10646 1993 UTF8』 | ISO/IEC 10646, UTF8 编码 |
『BINARY』 | 无 |
编码包含在仅作为信息的扩展头中;当如所述使用 pax 的时候,它不会将文件数据转换为其它编码。 BINARY 项表示未经编码的二进制数据。
comment
用作注释的一系列字符。pax 忽略了值字段中的所有字符。
ctime
随后文件的文件创建时间,等于文件的 stat 结构的 st_ctime 成员的值。
gid
拥有文件的组的组标识,表示为使用来自 ISO/IEC 646 的数字的十进制数。该记录覆盖了以下头块中的 gid 字段。在使用于写或复制方式的时候, pax 包含组标识大于 99,999,999 的每个文件的 gid 扩展头记录。
gname
以下文件的组,格式化为组数据库中的组名称。 该记录覆盖了以下头块中的 gid 和 gname 字段,以及任何 gid 扩展头记录。在使用于读取、复制或列表方式的时候,pax 将头记录中 UTF8 编码的名称 转换为适用于接收系统上组数据库的字符集。 如果任何一个 UTF8 字符不能转换,而且未指定 -o invalid=UTF8 选项,那么结果是不确定的。 在使用于写或复制方式的时候,pax 包含那些 组名称不能完全使用可移植字符集中的字母和数字表示的每个文件的 gname 扩展头记录。
linkpath
创建到另一个以前归档的任何类型的文件上的链接的路径名。 该记录覆盖了以下 ustar 头块中的 linkname 字段。
以下的 ustar 头块确定了创建的链接类型,无论是硬链接还是符号链接。 在后一种情况下,链接路径的值为符号链接的内容。 pax 将链接的名称(符号链接的内容)从 UTF8 编码转换为适合本地文件系统的字符集。
在使用于写或复制方式的时候,pax 包含那些 路径名不能完全使用可移植字符集中除了 NULL 之外的成员表示的每个链接的链接扩展头记录。
mtime
以下文件的文件修改时间,等于文件的 stat 结构的 st_mtime 成员的值。 该记录覆盖了以下头块的 mtime 字段。如果进程有相应的特权,那么修改时间会恢复。
path
下列文件的路径名。该记录覆盖了以下头块中的 name 和 prefix 字段。 pax 将文件的路径名从 UTF8 编码转换为适合本地文件系统的字符集。 在使用于写或复制方式的时候,pax 包含那些 路径名不能完全使用可移植字符集中除了 NULL 之外的成员表示的每个文件的路径扩展头记录。
realtime.any
以 realtime 为前缀的关键字保留用作未来的 POSIX 实时标准化。pax 能标识但暗中忽略它们。
security.any
以 security 为前缀的关键字保留用作未来的 POSIX 安全标准化。 pax 能标识但暗中忽略它们。
size
文件的八位字节大小,表示为使用来自 ISO/IEC 646 的数字的十进制数。 该记录覆盖了以下头块中的 size 字段。 在使用于写或复制方式的时候,pax 包含每个大于 999,999,999,999 的文件的扩展头记录的大小。
uid
拥有文件的用户的用户标识,表示为使用来自 ISO/IEC 646 的数字的十进制数。 该记录覆盖了以下头块中的 uid 字段。在使用于写或复制方式的时候,pax 包含每个所有者标识大于 99,999,999 的文件的 uid 扩展头记录。
uname
以下文件的所有者,格式化为用户数据库中的用户名称。 该记录覆盖了以下头块中的 uid 和 uname 字段,以及所有 uid 扩展头记录。在使用于读取、复制或列表方式的时候,pax 将头记录中名称的 UTF8 编码转换为接收系统的用户数据库适用的字符集。 如果有任何一个 UTF8 字符不能转换,而且未指定 -o invalid=UTF8 选项,那么结果是不确定的。 在使用于写或复制方式的时候,pax 包含每个 用户名称不能完全使用可移植字符集中的字母和数字表示的文件的 uname 扩展头记录。
如果 value 字段长度为零,它除去所有头块字段、先前输入的扩展头值或相同名称的全局扩展头值。
如果扩展头记录中(或 -o 可选参数中) 的关键字覆盖或除去了 ustar 头块中的相应字段,pax 忽略头块字段的内容。
(仅适用于 -x pax 格式。)
本节描述了选择应用于归档中文件的各种头记录和字段以及命令行选项的优先级。 当 pax 用于读取或列表方式时,它按这个顺序决定了文件属性:
对文件或归档成员名称起作用的标志 (-c、-i、-n、-s、-u 和 -v)相互作用如下:
在使用 -o listopt=format 选项的列表方式中,格式参数适用于每个选定的文件。pax 为每个选定的文件附加一个换行字符到 listopt 输出。格式参数用作 printf() 中描述的格式字符串,但有以下的例外:
例如,%(charset)s 序列是扩展头中字符集名称的字符串值。
关键字转换参数的结果是来自适用的头字段或扩展头的值,不带结尾 NULL。
所有用作转换参数的“关键字-值”从 UTF8 编码转换为适合本地文件系统、用户数据库等使用的字符集。
keyword,keyword...
所有非空关键字的值连接在一起,每个之间以 / 分隔。如果定义了关键字路径则缺省值是 path;否则缺省值是 prefix,name。
『%s -> %s』, value_of_keyword, contents_of_link
否则,%L 转换字符等同于 %F。
此命令返回以下的出口值:
0 | 成功完成。 |
>0 | 出现错误。 |
mkdir newdir
pax -rw olddir newdir
pax -wf /dev/rmt0
pax -wvf/dev/rfd0 -s /xxx/XXX/p xxx
或
pax -wvf/dev/rfd0 -s/x/X/gp xxx
dd if=/dev/hd6 bs=36b count=480 | pax -wf /dev/rfd0 -o datastream=_filename_,datastr_size=_size_
pax -v -o listopt="start %F end" -f pax.ar
pax -wf pax.ar -x pax file1
pax -rvf pax.ar -x pax -o path=newfilename
pax -rwL srclink destdir
pax -rvf pax.ar -x pax -o gname=bin
pax -rvf pax.ar -o delete=path
/usr/bin/pax | 包含 pax 命令。 |
在《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『文件概述』。