pax 命令
用途
抽取、写以及列出归档文件成员;复制文件和目录层次结构。
语法
- 列出已归档文件的成员文件
pax [ -c | -n] [-d] [-U ] [ -v] [-H| -L ] [-f Archive] [ -s ReplacementString... ] [-x Format] [-o Options] [ -Z ] [Pattern... ]- 使用-r标志提取存档文件
pax -r [ -c | -n ] [ -d ] [ -i ] [ -k ] [ -U ] [ -u ] [ -v ] [
-H|-L] [ -f 归档] [ -o 选项] [ -p 字符串... ] [ -s ReplacementString... ] [ -x 格式] [ -Z ] [模式 ...]- 使用-w标志写入存档文件
pax -w [ -d ] [
-i ] [ -t ] [ -U ] [ -u ] [ -v ] [ -X ] [ -H | -L ] [ -E ] [ -b 分块] [[ -a ] -f 归档] [ -o 选项] [ -s ReplacementString... ] [ -x 格式] [ -Z ] [ 文件...]- 使用-r和-w标记复制文件
pax -r -w [ -d ] [ -i ] [ -k ] [ -l ] [ -t ] [ -U ] [ -u ] [ -v ] [ -X ] [ -H | -L ] [ -p 字符串... ] [ -o 选项] [ -s ReplacementString... ] [ -x 格式] [ -Z ] [文件 ...] 目录
描述
- 列示已归档文件的成员文件 (列表方式)
当未指定 -r 标志或 -w 标志时,pax 命令会列出从标准输入读取的归档文件的所有成员文件。 如果指定了 Pattern 参数,那么仅会将路径名与指定模式匹配的成员文件写入标准输出。 如果指定的文件是目录,那么还会写入该目录中包含的文件层次结构。 当未指定 -r 标志或 -w 标志时,可指定 -c、-d、-f、-n、-s 和 -v 标志以及 Pattern 参数。
- 使用-r标志(读取模式)提取存档文件
当指定了 -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标志(写模式)写入存档文件
当指定了 -w 标志但未指定 -r 标志时,pax 命令会将 File 参数指定的文件的内容以归档格式写入标准输出。 如果未指定 File 参数,从标准输入读取要复制的文件列表(每行一个文件)。 当 File 参数指定目录时,会写入该目录中包含的所有文件。 可以使用 -a, -b, -d, -f, -i, -o, -s, -t, -u, -v, -x和 -X 标志以及 File 参数来指定 -w 标志。
- 使用-r和-w标志复制文件(复制模式)
当同时指定了 -r 和 -w 标志时,pax 命令会将 File 参数指定的文件复制到 Directory 参数指定的目标目录。 如果没有指定文件,从标准输入读取要复制的文件列表(每行一个文件)。 如果指定的文件是目录,那么还会复制该目录中包含的文件层次结构。 -r 和 -w 标志可以与 -d、-i、-k、-l、-o、-p、-s、-t、-u、-v 和 -X 标志及 File 参数一起指定。 Directory 参数必须指定。
复制的文件与写入归档文件然后抽取而获得的文件相同,当原始文件与复制的文件之间有硬链接时除外。
- 使用-o标志修改存档算法
使用 -o 标志根据关“键字-值”对来修改归档算法。 “关键字/值”对必须遵循正确的归档格式。 有效关键字及其行为的列表在后继的 -o 标志的描述中给出。
- 进一步说明
在读取或复制方式下,如果需要中间目录以抽取归档成员,那么 pax 命令执行的操作与
mkdir()子例程执行的操作类似,并将中间目录用作路径参数,值S_IRWXU用作方式参数。如果没有任何指定的模式或文件操作数与至少一个文件或归档成员匹配,pax 为每个不匹配的模式或文件操作数写一条诊断消息到标准错误,并以错误状态退出。
在遍历目录过程中,pax 命令会通过进入作为最近一次访问的文件的祖代的先前已访问目录来检测无限循环。 在检测到无限循环时,pax 命令会将诊断消息写入标准错误然后终止。
当 pax 命令处于读取方式或列表方式时,通过使用 -x pax 归档格式,无法将扩展头记录中的文件名,链接名称,所有者名称或任何其他字段从 pax UTF8 代码集格式转换为当前代码集和语言环境。 pax 命令会将诊断消息写入标准错误,按为 -o invalid= 选项描述的方式处理文件,然后处理归档中的下一个文件。
对于AIX 5.3,"pax命令默认忽略扩展属性。 -U 选项通知 pax 归档或复原扩展属性 (包括 ACL)。 -pe 选项将保留 ACL。 指定 -pe 选项时,如果 pax 未能保留 ACL ,那么会将诊断消息写入标准错误,但不会删除抽取的文件。 将返回非零退出码。 pax 归档文件中的扩展属性条目需要新的记录类型。
变量
| 项 | 描述 |
|---|---|
| 目录 | 复制文件时指定目标目录的路径。 |
| 文件 | 指定要复制或归档的文件的路径。 如果没有文件匹配 File 参数,pax 命令检测错误、退出并写诊断消息。 |
| 模式 | 指定匹配一个或多个归档成员路径的模式。 / (反斜杠)字符在 Pattern 参数中无法标识,并使后继字符不再含有特殊意义。 如果未指定 Pattern 参数,将选择归档中的所有成员。 如果指定了 Pattern 参数,但找不到任何与指定模式匹配的归档成员,那么 pax 命令会检测到该错误、然后退出并编写诊断消息。 |
标志
| 项 | 描述 |
|---|---|
| -a | 将文追加到归档末尾。 注: 流式磁带设备不允许使用追加功能。
|
| -b 分块 | 指定输出的块大小。 Blocking
参数指定一个正的十进制整数值来指定每块的字节数。 符合 POSIX2 标准的应用程序不得指定大于 32256 的块大小值。 设备和归档格式可能会对阻止施加限制。 分块在输入时自动确定。 创建归档时的缺省分块取决于归档格式。 (请参阅 -x 标志定义。) 阻止 参数接受以下其中一个值:
|
| -c | 与所有文件或归档成员匹配,由 Pattern 参数指定的文件除外。 |
| -d | 使正在复制、归档或抽取的目录与目录而不是目录的内容匹配。 |
| -E | 在将文件添加到新归档或现有归档期间,避免截断较长的用户名和组名。 |
| -f 归档 | 指定要用于代替标准输入 (未指定 -w 标志时) 或标准输出 (指定 -w 标志但未指定 -r 标志时) 的归档文件的路径。 与 -a 标志选项一起指定时,任何写入归档的文件都会追加到归档的末尾。 |
| -H | 如果在命令行上指定了引用目录的符号链接,那么 pax 会通过将该链接的名称用作源于该链接中引用的目录中的文件层次结构的名称,对该文件层次结构进行归档。 缺省情况下,pax 归档符号链接自身。 |
| -i | 交互地重命名文件或归档。 对每个匹配 Pattern 参数的归档成员或匹配 File 参数的文件,写一个提示到包含文件或归档成员名称的显示设备。 然后从显示设备读取一行。 如果该行为空,略过文件或归档成员。 如果该行由单独一个句号构成,处理文件或归档成员但不修改其名称。 否则,其名称替换成行的内容。 |
| -k | 防止 pax 命令改写现有文件。 |
| -l | 复制文件时链接文件。 只要可能就在源和目标文件层次结构间建立硬链接。 |
| -L | 如果在命令行上指定了引用目录的符号链接,或者在遍历文件层次结构期间遇到该符号链接,那么 pax 会通过将该链接的名称用作源于该链接中引用的目录的文件层次结构的名称,对该文件层次结构进行归档。 缺省情况下,pax 归档符号链接自身。 |
| -n | 选择匹配每个 Pattern 参数的第一个归档成员。 只有一个归档成员匹配一个模式。 |
| -o 选项 | 根据定义在 Options 参数中的“关键字/值”对来修改归档算法。 “关键字/值”对必须按下列格式: keyword:=value,keyword:=value,... 某些关键字只应用于特定的文件格式,这一点在每个描述中指出。 pax 将忽略使用不适用于正在处理的文件格式的关键字。 关键字可以空格开始。 值 字段由零个或多个字符组成; 在 值中,任何文字逗号都必须以反斜杠 (\) 开头。 在 选项 中,将忽略逗号作为最后一个字符,或者忽略后跟空格作为最后一个字符的逗号。 可以指定多个 -o 选项。 如果向这些多个 -o 选项提供的关键字发生冲突,那么在命令行序列中较后出现的关键字和值优先。 会忽略较早的值。 下列“关键字/值”对支持指出的文件格式:
注:
datastream 关键字没有缺省变量大小。 必须指定一个。
注意:可以指定关键字对的多个实例。 如果将不同值分配给同一关键字,那么
pax 命令会使用最近一次分配给该关键字的值来运行 -o 标志。
在用于写或复制方式的时候,pax 在它产生的扩展头记录中省略所有匹配 pattern 的关键字。 在读或列表方式下使用时, pax 将忽略与扩展头记录中的 pattern 匹配的任何关键字。 在所有情况下,通过使用标准 shell 模式匹配表示法来完成匹配。 例如, |
| 项 | 描述 |
|---|---|
| -o Options(续) |
此关键字允许用户控制写入扩展头记录的
其他任何 string 中的 % 字符产生未定义的结果。 如果在 -o 选项 列表中未将 "关键字/值" 对指定为
当带有适当选项以写或复制方式使用时,pax 创建全局扩展头记录,其
其他任何 string 中的 % 字符产生未定义的结果。 如果该“关键字/值”对未在 -o Options 列表中指定,名称的缺省值为
其中,
此关键字允许用户控制 pax 在迂到以下扩展头记录中的值时执行的操作:
|
| 项 | 描述 |
|---|---|
| -o Options(续) | pax 标识这些无效值:
支持这些 action 参数的相互排斥的值:
在写入方式下,pax 命令会将文件的内容写入归档,即使该文件是指向其内容已写入归档的文件的硬链接。 |
| 项 | 描述 |
|---|---|
| -o Options(续) |
此关键字指定在列表方式下指定了 -v 选项时会产生的目录的输出格式。 为了避免产生歧义,此“关键字/值”对必须用作跟在 -o 标志后的唯一或最终“关键字/值”对;选项参数剩余部分中的所有字符被视为是格式字符串的一部分。 如果指定了多个 -o listopt=format 选项,那么格式字符串将被视为单个并置字符串,并按命令行顺序进行求值。 请参阅
在用于写或复制方式的时候,pax 包含每个文件的 atime、ctime 和 mtime 扩展头记录。 |
- 扩展头关键字
(仅适用于 -x pax 格式。)
如果指定了 -x pax 格式,那么以下列表中定义的关键字和值可以两种方式中的任意一种方式用作 -o 标志的参数:
- atime
下列文件的文件访问时间等于文件的 stat 结构的 st_atime 成员的值。
- 字符集
将字符的名称设置为对下列文件中数据进行编码。 定义此表中的条目来参考已知的标准:
值 正式标准 ISO-IR 646 1990ISO/IEC 646 IRV ISO-IR 8859 1 1987ISO 8859-1 ISO-IR 8859 2 1987ISO 8859-2 ISO-IR 10646 1993ISO/IEC 10646 SO-IR 10646 1993 UTF8ISO/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 扩展头记录。
hdrcharset- 用于对
gname,linkpath,path和uname扩展头记录的值字段进行编码的字符集的名称。 下表中的条目被定义为引用已知的标准。 可以在发起方和收件人之间约定额外的名称。如果未指定值 正式标准 ISO-IR106462000UTF-8ISO/IEC 10646 , UTF-8 编码 BINARY无 hdrcharset扩展头记录,那么将使用缺省字符集 (ISO/IEC 10646-1:2000 标准 UTF-8 编码) 对扩展头记录中的所有值进行编码。BINARY条目指示在受影响文件的扩展头中记录的所有值都是来自底层系统的未编码二进制数据。 - 链接路径
创建来指向先前归档的另一文件(任何类型都可)的链接的路径名。 此记录将覆盖以下
ustar头块中的 linkname 字段。以下
ustar头块确定了创建的链接类型,无论是硬链接还是符号链接。 在后一种情况下,链接路径的值为符号链接的内容。 pax 将链接的名称(符号链接的内容)从 UTF8 编码转换为适合本地文件系统的字符集。在写入或复制方式下使用时,pax 包含每个链接的链接路径扩展头记录,该链接的路径名无法完全使用可移植字符集中除了 NULL 之外的成员表示。
mtime以下文件的文件修改时间,等于文件的 stat 结构的 st_mtime 成员的值。 该记录覆盖了以下头块的 mtime 字段。 如果进程有相应的特权,那么修改时间会恢复。
path下列文件的路径名。 该记录覆盖了以下头块中的 name 和 prefix 字段。 pax 会将文件的路径名从 UTF8 编码转换到适合本地文件系统的字符集。 在写入或复制方式下使用时,对于其路径名无法完全用可移植字符集中 NULL 以外的成员表示的每个文件,pax 包含其路径扩展头记录。
realtime.任何以 real time 作为前缀的关键字为保留项,用于将来的 POSIX Real-Time 标准化。 pax 能标识但暗中忽略它们。
security.任何以 security 作为前缀的关键字为保留项,用于将来的 POSIX Security 标准化。 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 忽略头块字段的内容。Extended header keyword precedence(仅适用于 -x pax 格式。)
本节描述了选择应用于归档中文件的各种头记录和字段以及命令行选项的优先级。 当 pax 用于读取或列表方式时,它按这个顺序决定了文件属性:
- 如果使用了 -o delete=keyword-prefix,若适用就从步骤 (7) 确定受影响的属性,否则忽略。
- 如果使用了 -o keyword:=NULL,忽略受影响的属性。
- 如果使用了 -o keyword:=value,那么将 value 值分配给受影响的属性。
- 如果指定文件的扩展头记录中存在 value,那么将 value 值分配给受影响的属性。 在扩展头记录冲突的时候,头中最后给出的值优先。
- 如果使用了 -o keyword=value,那么将 value 值分配给受影响的属性。
- 如果在全局扩展头记录中存在 value 值,那么将它分配给受影响的属性。 在全局扩展头记录冲突的时候,在全局头中最后给出的值优先。
- 否则,由
ustar头块确定属性。
标志交互和处理顺序
对文件或归档成员 (-c, -i, -n, -s, -u和 -v) 的名称执行操作的标志交互如下:
- 抽取文件时,将根据用户指定的 pattern 参数 (由 -c, -n和 -u 标志修改) 来选择归档成员。 然后,任何 -s和 -i 标志按该顺序修改所选文件的名称。 -v 标志写这些从修改产生的名称。
- 在向归档文件写文件或复制文件的时候,根据用户指定的并用 -n(该选项对复制模式无效)和 -u 标志修改的路径名称来选择文件。 然后,任何 -s和 -i 标志按该顺序修改这些修改所产生的名称。 -v 标志写该修改产生的名称。
- 如果同时指定了 -u 和 -n 标志,那么 pax 命令不会考虑选择的文件,除非它比与其比较的文件更新。
列表方式格式规范
在使用 -o listopt=
format 选项的列表方式中,格式参数适用于每个选定的文件。 pax 将一个换行符附加到每个所选文件的 listopt 输出。 格式参数用作 printf() 中描述的格式字符串,但有以下的例外:
- keyword 序列可以出现在格式转换说明符之前。 转换参数由 keyword 的值定义。 支持以下的关键字:
ustar和cpio头块的任意字段名称条目。- 为扩展头定义的或作为扩展头中的扩展提供的任何关键字。
例如,
%(charset)s序列是扩展头中字符集名称的字符串值。关键字转换参数的结果是来自适用的头字段或扩展头的值,不带结尾 NULL。
所有用作转换参数的关键字值都将从 UTF8 编码转换为适合于本地文件系统和用户数据库等的字符集 (如果适用)。
- 额外的转换字符
T指定时间格式。T转换字符前面可以有序列 keyword=subformat,其中 subformat 是date命令允许的日期格式。 缺省关键字是mtime,缺省子格式是:%b %e %H:%M %Y。 - 额外的转换字符
M指定ls -l命令所显示的文件方式字符串。 如果省略了 keyword,就使用mode。 例如,%.1M写入对应于ls -l命令的 entry type 字段的单个字符。 - 额外的转换字符
D指定块或特殊文件的设备 (如果适用)。 如果不适用,且指定了 keyword,那么此转换等价于 %keyword u。 如果不适用并且省略了 keyword ,那么此转换等同于<space>。 - 额外的转换字符
F指定路径名。F转换字符可以逗号分隔的关键字序列开头:关键字,关键字...
所有非空关键字的值连接在一起,每个之间以 / 分隔。 如果定义了关键字路径则缺省值为 path;否则缺省值为 prefix,name。
- 额外的转换字符
L指定符号链接扩展。 如果当前文件是符号链接,那么 %L 扩展到:"%s -> %s", value_of_keyword和 contents_of_link否则,%L 转换字符等同于 %F。
退出状态
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
0 |
成功完成。 |
>0 |
发生错误。 |
安全性
- 关注 RBAC 用户
- RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。
示例
- 要将
olddir目录层次结构复制到newdir中,请输入:mkdir newdirpax -rw olddir newdir - 要将当前目录的内容复制到磁带机上,请输入:
pax -wf /dev/rmt0 - 要将文件
xxx归档为XXX并显示成功的替换,请输入下列其中一条命令:pax -wvf/dev/rfd0 -s /xxx/XXX/p xxxpax -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.ar 中的文件,请输入:
pax -v -o listopt="start %F end" -f pax.ar - 要以 pax 格式创建归档 pax.ar ,请输入:
pax -wf pax.ar -x pax file1 - 要使用新路径从具有 pax 格式的归档 pax.ar 中抽取文件,请输入:
pax -rvf pax.ar -x pax -o path=newfilename - 要将来自源的符号链接的内容复制到目标位置,请输入:
pax -rwL srclink destdir - 要从组名为
bin的归档抽取文件,请输入:pax -rvf pax.ar -x pax -o gname=bin - 要在抽取期间忽略 pax 格式的归档中的路径名,请输入:
pax -rvf pax.ar -o delete=path - 要在创建归档过程中避免截断较长的用户和组名,请输入:
pax -wEf file.pax file - 要将
olddir目录层次结构复制到带有与文件相关的 ACL 和 EA 的newdir,请输入:mkdir newdir pax -rUw olddir newdir
文件
| 项 | 描述 |
|---|---|
| /usr/bin/pax | 包含 pax 命令。 |