免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3642 | 回复: 3
打印 上一主题 下一主题

问下pax问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-02 18:29 |只看该作者 |倒序浏览
以前没用过pax,请教下:
pax和tar有什么本质区别? 是不是在所有情况下都能相互替换。

论坛徽章:
0
2 [报告]
发表于 2010-06-02 21:44 |只看该作者
版主知道吗?

论坛徽章:
0
3 [报告]
发表于 2010-06-03 00:14 |只看该作者
pax 命令

用途
抽取、写以及列出归档文件成员;复制文件和目录层次结构。

语法
要列出归档文件的成员文件
pax [  -c ] [  -d ] [  -n ] [  -v ] [  -H |   -L ] [  -f  Archive ] [  -s ReplacementString ... ] [  -x Format ] [  -o Options ] [ Pattern ... ]

使用 -r 标志来抽取归档文件
pax -r [  -c ] [  -d ] [  -i ] [  -k ] [  -n ] [  -u ] [  -v ] [  -H |  -L ] [  -f Archive ] [  -o Options ] [  -p String ... ] [  -s ReplacementString ... ] [  -x Format ]  [ Pattern ... ]

使用 -w 标志来写归档文件
pax -w [  -d ] [  -i ] [  -t ] [  -u ] [  -v ] [  -X ] [  -H |   -L ] [  -b Blocking ] [ [  -a ]   -f Archive ] [  -o Options ] [  -s ReplacementString ... ] [  -x Format ] [ File ... ]

使用 -r 和 -w 标志来复制文件
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 标志抽取归档文件(读取方式)
当指定了 -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 参数指定了一个目录时,将写目录包含的所有文件。 -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 标志复制文件(复制方式)
当一同指定 -r 和 -w 标志时,pax 命令将由 File 参数指定的文件复制到 Directory 参数指定的目的地目录中。如果没有指定文件,从标准输入读取要复制的文件列表(每行一个文件)。如果指定的文件是一个目录,目录包含的文件层次结构也会复制。 -r 和 -w 标志可以与 -d、-i、-k、-l、-o、-p、-n、-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= 选项所描述的那样处理文件,然后处理归档中的下一个文件。

变量

Directory 复制文件时指定目的地目录的路径。
File 指定要复制或归档的文件的路径。如果没有文件匹配 File 参数,pax 命令检测错误、退出并写诊断消息。
Pattern 指定匹配一个或多个归档成员路径的模式。 / (反斜杠)字符在 Pattern 参数中无法标识,并使后继字符不再含有特殊意义。如果未指定 Pattern 参数,将选择归档中的所有成员。
如果指定了 Pattern 参数,但未发现匹配指定模式的归档成员,pax 命令检测错误、退出并写诊断消息。


标志

-a 将文件附加到归档末尾。

注:流式磁带设备不允许附加。
-b Blocking 指定输出的块大小。Blocking 参数指定一个正的十进制整数值来指定每块的字节数。符合 POSIX2 的应用程序不应当指定大于 32256 的块大小值。设备和归档格式可以给分块强加限制。分块在输入时自动确定。创建归档时的缺省分块取决于归档格式。(请参阅 -x 标志定义。)
Blocking 参数的值可以是下列之一:

Integer b
以字节指定块大小为 Integer 参数乘 512 所指定的正十进制整数的值。
Integer k
以字节指定块大小为 Integer 参数乘 1024 所指定的正十进制整数的值。
Integer m
以字节指定块大小为 Integer 参数乘 1024 x 1024 所指定的正十进制整数的值。
Integer+Integer
以字节指定块大小为各 Integer 参数所指定的正十进制整数的和。  
-c 匹配所有文件和归档成员,除了那些用 Pattern 参数指定的。
-d 使正在复制、归档或抽取的目录仅匹配目录本身而不是目录的内容。
-f Archive 指定用作取代标准输入(未指定 -w 标志时)或标准输出(指定了 -w 标志但未指定 -r 标志时)的归档文件的路径。当指定 -a 标志选项时,任何写到归档的文件都附加到归档尾部。
-H 如果引用目录的符号链路在命令行指定,pax 将链接名称作为文件层次结构的名称,对来源于链接中引用的目录中的文件层次结构归档。缺省情况下,pax 归档符号链接自身。
-i 交互地重命名文件或归档。对每个匹配 Pattern 参数的归档成员或匹配 File 参数的文件,写一个提示到包含文件或归档成员名称的显示设备。然后从显示设备读取一行。如果该行为空,略过文件或归档成员。如果该行由单独一个句号构成,处理文件或归档成员但不修改其名称。否则,其名称替换成行的内容。
-k 防止 pax 命令改写现有文件。
-l 复制文件时链接文件。只要可能就在源和目的层次结构间建立硬链接。
-L 如果引用目录的符号链接在命令行指定或者在遍历文件层次结构期间遇到,pax 将链接名称作为文件层次结构的名称,对来源于链接中引用的目录的文件层次结构归档。缺省情况下,pax 归档符号链接自身。
-n 选择匹配每个 Pattern 参数的第一个归档成员。只有一个归档成员匹配一个模式。
-o Options 根据定义在 Options 参数中的“关键字-值”对来修改归档算法。“关键字-值”对必须按下列格式:
keyword:=value,keyword:=value,...

某些关键字只应用于特定的文件格式,这一点在每个描述中指出。 pax 将忽略使用不适用于正在处理的文件格式的关键字。

关键字可以空格开始。 value 字段由零个或更多的字符构成;在 value 中,任何文字逗号必须以反斜杠 (\) 开始。 Options 中作为最终字符的逗号,或后面只跟有空格作为最终字符的逗号,都将被忽略。可以指定多个 -o 选项。如果给这些多个 -o 选项的关键字冲突,在命令行序列中晚出现的关键字和值有优先权;早出现的值被忽略。

下列“关键字-值”对支持指出的文件格式:

datastream=pathname 和 datastr_size=size(适用于所有文件格式。)

datastream 关键字表示输入的归档文件不属于一个文件格式;相反,它是来自标准输入设备的数据流。因此,数据应该归档为 -x 标志标识的格式的常规文件。数据流的文件名应该在 pathname 参数中指定,并包括调用命令的人员的标识、组标识和表示文件方式的 umask。


注:datastream 关键字没有缺省变量大小。必须指定一个。
datastr_size 关键字使用十进制数字表示数据流输入的字节数大小。如果 pax 命令在读取 size 参数前遇到文件结束(EOF)字符,它会为归档文件填入空值。空值使归档文件和 size 参数指定的大小相同。如果归档文件的数据超出指定的大小,pax 命令将归档文件截断为 size 参数指定的大小。pax 命令还停止接收输入,并关闭归档文件。


注:可以指定关键字对的多个实例。如果给相同关键字分配了不同值,pax 命令使用最后分配给关键字的值来执行 -o 标志。
delete=pattern(仅适用于 -x pax 格式。)

在用于写或复制方式的时候,pax 在它产生的扩展头记录中省略所有匹配 pattern 的关键字。在用于读或列出方式的时候,pax 忽略扩展头记录中任何匹配 pattern 的关键字。在所有情况下,使用标准 shell 模式匹配记号来完成匹配。例如,-o delete=security.* 禁止与安全性相关的信息。



-o Options(续)  

exthdr.name=string(仅适用于 -x pax 格式。)

该关键字允许用户控制用于扩展首记录的写进 ustar 头块的名称。名称是做过下列字符替换后 string 的内容:

string 包含:
被替换:
%d
文件的目录名,等同于 dirname 实用程序在已转换路径名上的结果。
%f
文件名,等同于 basename 实用程序在已转换路径名上的结果。
%%
一个 % 字符
其它任何 string 中的 % 字符产生未定义的结果。如果该“关键字-值”对未在 -o Options 列表中指定,名称的缺省值是:

%d/PaxHeaders/%f

globexthdr.name=string(仅适用于 -x pax 格式。)

当带有适当选项以写或复制方式使用时,pax 创建全局扩展头记录,其 ustar 头块被 pax 的先前版本按照常规文件处理。该关键字允许用户控制用于扩展头记录的写进 ustar 头块的名称。名称是做过下列字符替换后 string 的内容:

string 包含:
被替换:
%n
归档中表示全局扩展头记录序列号的整数(从 1 开始)
%%
一个 % 字符
其它任何 string 中的 % 字符产生未定义的结果。如果该“关键字-值”对未在-o Options 列表中指定,名称的缺省值是

$TMPDIR/GlobalHead.%n

$TMPDIR 或者是 TMPDIR 环境变量的值,或者是 /tmp,如果 TMPDIR 取消设置。

invalid=action(仅适用于 -x pax 格式。)

该关键字允许用户控制在扩展头记录中遇到如下值时 pax 采取的操作:

处于读取或复制方式,在目的地层次结构中无效,或
处于列表方式,不能写入编码集和当前语言环境。



-o Options(续) pax 标识这些无效值:

在读取或复制方式,目的地层次结构中包含无效字符编码的文件名或链接名。(例如,名称可能包含嵌入的 NULL。)
在读取或复制方式,长于目的地层次结构允许的最大值的文件名或链接名(对于路径名的组成部分或整个路径名)。
在列表方式,任何不能写入编码集和当前语言环境的字符串值(文件名、链接名、用户名等)。
支持这些 action 参数的相互排斥的值:

bypass
在读取或复制方式,pax 忽略文件,不改变目的层次结构。在列表方式,pax 写文件所有有效的请求值,但未指定写无效值的方法。

rename
在读取或复制方式,pax 运行就如同 -i 标志对每个有无效文件名或链接名值的文件有效,它允许用户交互地提供替换名。在列表方式,pax 等同于 bypass 的操作。

UTF8
当使用在读取、复制或列表方式,且文件名、链接名、所有者名或任何扩展头记录中的其它字段不能由 pax UTF8 编码集格式转换到当前编码集或语言环境,pax 为名称使用实际的 UTF8 编码。

write
在读取或复制方式,pax 写文件、转换或截断名称,不考虑这是否可能会覆盖现有的具有有效名称的文件。在列表方式,pax 等同于 bypass 的操作。

如果未指定 -o invalid=action,pax 像已指定 bypass 操作那样执行。任何由 -o invalid=actions 允许的对现有文件的覆盖受到权限(-p)和修改时间(-u)的限制,如果也指定了 -k 标志就会禁止覆盖。

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 字段。如果进程有相应的特权,那么修改时间会恢复。

论坛徽章:
0
4 [报告]
发表于 2010-06-03 08:16 |只看该作者
太感谢了!nyfly
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP