AIX命令参考大全,卷 1,a - c - cpio 命令

[ 页的底部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]

AIX命令参考大全,卷 1,a - c

cpio 命令

用途

把文件拷贝进出归档存储器及目录。 本文档描述了 AIX cpio 命令和System V cpio 命令。

语法

cpio -oa ] [  c ] [ -E{force|ignore|warn} ] [  v ] [  B | C Value ] <FileName >Output

cpio -ib ] [  c ] [  d ] [ -E{force|ignore|warn} ] [  f ] [  m ] [  M ] [  r ] [  s ] [  t ] [  u ] [  v ] [  S ] [  6 ] [  B | C Value ] [  Pattern... ] <Input

cpio -pa ] [  d ] [ -E{force|ignore|warn} ] [  l ] [  m ] [  M ] [  u ] [  v ] Directory <FileName

描述

cpio 命令把文件从 cpio 归档中拷贝进出。cpio 归档可能跨越多个卷。-i-o-p 标志选择了要执行的操作。

注: 如果您把输出从 cpio 命令重定向到一个特殊文件(设备),您应该把输出重定向到一个原始设备而不是一个块设备。因为 写块设备是异步地完成的,没有办法知道是否到达了 设备的末端。

注:
  1. cpio 命令由于 XPG/4 和 POSIX.2 标准的限制,当文件的大小超过 2G 时是不能启用的。
  2. cpio 不保存任何稀疏分配的文件的稀疏特性。 任何在恢复前原本稀疏的文件 将在文件系统中根据大小分配所有的空间。

cpio -o 命令

cpio -o 命令从标准输入中读出文件路径名并且把这些文件连同路径名和状态信息拷贝到标准输出中。避免给予cpio 命令由许多唯一链接的文件组成的路径名,因为可能没有足够的存储器来跟踪它们,并可能会导致链接信息的丢失。

cpio -i 命令

cpio -i 命令从标准输入中读入一个由 cpio -o 命令创建的归档,并且从中拷贝和 Pattern 参数相匹配的文件连同名称。这些文件被拷贝进当前目录树中。您可以列出多个的 Pattern 参数,通过使用 ksh 命令中描述的文件名符号表示法。注意在这个应用程序中,特殊字符 * (星号),? (问号),和 [...] (方括号和省略号)除了在 ksh 命令中描述的使用,还匹配路径名中的 / (斜杠) Pattern 参数的缺省值是 * (星号),即选择输入中所有文件。在表达式例如 [a-z] 中, 减号意味着根据当前的整理序列贯穿

一个整理序列可以定义字符范围中使用的同等类。

cpio -p 命令

cpio -p 命令从标准输入中读入文件路径名并且把这些文件拷贝到由 Directory 参数指定的目录中。指定的目录必须已经存在。如果这些路径名包括了不存在的目录名,您必须用 d 标志来创建指定的目录。

注: 只要您有 root 用户的权力,您就可以拷贝特殊文件。

参数

Directory 指定目录。
<FileName 指定文件名列表,cpio 命令用来作为输入。
>Output 指定输出设备,例如磁盘或者文件。如想获得更多关于使用磁带设备的信息,请参考 rmt 特殊文件。
<Input 指定输入设备(这里 Input 是由 cpio -o 命令创建的 Output 文件)。如想获得更多关于使用磁带设备的信息,请参阅 rmt 特殊文件。
Pattern 指定命令使用的方式(如同 ksh 命令中描述的)。 Pattern 参数的缺省值是 * (星号),即选择 Input中所有的文件。

标志

所有的标志都必须列在一起,中间没有空格。 以下 -o-i-p 标志不是所有的都可以一起使用。

a 源文件的访问时间重新设置为先前的时间。
b 交换字节和半字。

注: 正在处理的文件中如果有奇数个字节或者半字,那么数据会丢失。
B 执行使用 512 字节的块输入输出到一个记录。

注:当使用 BC 选项来抽取或是创建一个磁带归档时,块因子数必须是该磁带设备的物理块大小的倍数。

当使用 BC 选项从磁带抽取一个归档时,块因子数必须不大于归档在磁带上的大小。

B 标志和 C 标志是相互排斥的。如果把两者列在一起,那么 cpio 命令将使用标志列表中的后者。

c 以 ASCII 字符的形式读写头信息。如果 cpio 归档是使用 c 标志创建的, 它必须使用 c 标志来抽取。
CValue 执行由 Value 参数定义的 512 字节的倍数个字节到一个记录的块输入输出。例如,-C2 标志改变块输入输出到记录的大小为 1024 字节。
d 创建需要的目录。
-E -E 选项需要下列参数中的一个。 如果您省略了 -E 选项,则warn 是缺省的 cpio 行为。
force
如果文件的范围属性不能保存,对文件的抽取或者拷贝操作就会失败。
ignore
忽略保存范围属性中的任何错误。
warn
如果文件的空间保留或者固定范围大小无法保存,就发出一个警告。这是缺省的行为。
f 拷贝除了匹配 Pattern 参数的所有文件。
l 任何可能的时候,链接文件而不是拷贝他们。这个标志只可以和 cpio -p 命令一起使用。
m 保留先前的文件修改时间。这个标志在拷贝目录时不起作用。
M 即使目录被拷贝,保留先前文件的修改时间。
r 交互式重命名文件。如果您不想改变文件名, 输入单个句点或者按 <Enter> 键。在后一种情况下, cpio 命令不拷贝那个文件。
s 交换字节。这个标志只和 cpio -i 命令一起使用。

注: 如果正在处理的文件中有奇数个字节,数据可能丢失。
S 交换半字。这个标志只有在 cpio -i 命令中可用。

注: 如果正在处理的文件中有奇数个半字,数据可能丢失。
t 创建一个目录。这个操作不拷贝任何文件。
u 无条件拷贝。旧文件用同样的名字取代新文件。
v 列出文件名。如果和 t 标志一起使用,输出看起来和 ls -l 命令相似。
6 处理一个旧文件(例如,一个以 UNIX 第六版格式写的文件)。 这个标志只和 cpio -i 命令一起使用。

退出状态

这个命令返回以下退出值:

0 成功完成。
>0 有错误发生。

示例

  1. 要拷贝文件到磁盘上,输入

    cpio -ov <filenames >/dev/rfd0

    以压缩格式拷贝有 filenames 文件中列出的路径名的文件到磁盘(>/dev/rfd0)上。v 标志使得 cpio 命令显示它所拷贝的每一个文件的名字。这个命令 在拷贝文件的备份时有用。磁盘必须已经格式化, 但不必包含一个文件系统或已被安装。

    注:uid 和 gid 的大小超过 65535 的文件不能用 cpio 命令归档。 在这种情况下,使用者应该使用 backup 和 restore。
  2. 把当前目录中的文件拷贝到磁盘上,输入:

    ls *.c | cpio -ov >/dev/rfd0

    拷贝当前目录中所有名字以 .c 结尾的文件。

  3. 要拷贝当前目录和所有的子目录到磁盘上,输入:

    find . -print | cpio -ov >/dev/rfd0

    这将保存以当前目录(.)开始的目录树,并且包含它的所有子目录和文件。 输入这个命令会更快:

    find . -cpio /dev/rfd0 -print

    -print 条目显示每一个被拷贝的文件的名字。

  4. 要用 cpio 命令列出已经保存到磁盘上的文件,输入:

    cpio -itv </dev/rfd0

    这显示先前保存到 /dev/rfd0 的,cpio 命令格式的文件的目录。这个清单和 ls -l 命令生成的长目录清单相似。只列出文件路径名,只要使用 -it 标志。

  5. 要从磁盘拷贝先前用 cpio 命令保存的文件,输入:

    cpio -idmv </dev/rfd0

    这将把先前用 cpio 命令保存到 /dev/rfd0 文件的文件拷贝回文件系统(指定 -i 标志)。d 标志在目录树被保存时,允许 cpio 命令创建适合的目录。 m 标志在保存文件时,保持最后的修改时间有效。 v 标志 使得 cpio 命令显示每一个被拷贝的文件名。

  6. 从磁盘上拷贝选择的文件,输入:
    cpio -i "*.c" "*.o" </dev/rfd0
    这样从磁盘上拷贝以 .c.o 结束的文件。注意,模式 “*.c”“*.o” 必须 附上引号以阻止 shell 把 * (星号)作为一个模式匹配字符。 cpio 命令自己解码模式匹配字符,是一种特殊的情况。
  7. 要从磁盘拷贝文件时重命名文件,输入:

    cpio -ir </dev/rfd0

    -r 标志使得 cpio 命令 询问您是否要在从磁盘拷贝文件前重命名每个文件。例如,消息:

    Rename <prog.c>

    询问 是否要在以 prog.c 名字保存的文件被拷贝时给它一个新的名字。如果想重命名这个文件,输入新名字,按 Enter 键。如果想保持同样的名字,必须再次输入那个名字。要根本避免拷贝那个文件,按 Enter 键。

  8. 要拷贝目录和它的所有子目录,输入:

    mkdir /home/jim/newdir
    find . -print | cpio -pdl /home/jim/newdir

    这将复制当前的目录树,包括当前的目录和它的所有子目录及文件。复本放在新的 /home/jim/newdir 目录中。l 标志 使得 cpio 命令在可能时链接文件而不是拷贝它们。

    注: 对于 9348 Magnetic Tape Unit Model 12,cpio 的性能可以通过改变缺省的块大小来提高。 如果想改变块大小,输入下面的命令行:

    chdev -1 <device_name> -a block_size=32k

文件

/usr/bin/cpio 包含 cpio 命令。

相关信息

find 命令、ksh 命令、ln 命令、ls 命令。

cpio 文件格式,rmt 特殊文件。

系统管理备份概述,在 AIX 5L Version 5.2 System Management Concepts: Operating System and Devices中,提供不同备份模式的信息, 恢复处理,不同类型的备份介质和备份策略的指导。

目录概述,在 《AIX 5L V5.2 系统用户指南:操作系统与设备》 中,解释了使用目录和路径名。

文件系统,在 AIX 5L Version 5.2 System Management Concepts: Operating System and Devices 中,说明文件系统类型、管理、结构和维护。

文件概述,在 《AIX 5L V5.2 系统用户指南:操作系统与设备》 中,提供关于操作文件的信息。

System V cpio 命令

用途

把文件拷贝进出归档存储器及目录。

语法

cpio -i [ -b ] [ -B ] [ -c ] [ -d ] [ -f ] [ -k ] [ -m ] [ -r ] [ -s ] [ -S ] [ -T ] [ -t ] [ -u ] [ -v ] [ -V ] [ -6 ] [ -C bufsize ] [ -E file ] [ -H hdr ] [ -I file [ -M message ] ] [ -R ID ] ] [ Patterns ...]

cpio -o [ -a ] [ -A ] [ -B ] [ -c ] [ -L ] [ -v ] [ -V ] [ -C bufsize ] [ -H hdr ] [ -K mediasize ] [ -O file [ -M message ] ]

cpio -p [ -a ] [ -d ] [ -l ] [ -L ] [ -m ] [ -u ] [ -v ] [ -V ] [ -R ID ] Directory

描述

cpio 命令拷贝文件进出归档。 -i, -o-p 选项选择要执行的操作。下列的列表描述了每个操作。 -o, -p-i 选项是相互排斥的。

cpio -i(拷贝进)

cpio -i(拷贝进)从标准输入中抽取文件 (只要 -I 没有被指定), 这个输入被假定是先前 cpio -o 的结果。只有名字和 Patterns 匹配的文件被选择。 Patterns 是在常规 ksh 符号表示法的文件名中给出的正则表达式。在 Patterns 中,元字符“?”,“*” 和“[.. . ]”匹配正斜杠(“/”), 而反斜杠 ("\") 是转义符。一个“!” 元字符意味着否。(例如,“[!abc]”模式将排除所有以 a、b 或 c 开始的文件。)可以指定多种模式,并且如果没有模式被指定, Patterns 的缺省值是 “*”(那就是选择全部)。每个模式都必须引在双引号中; 另外,当前目录中的文件的名字可以被使用。抽取的文件是有条件的创建的,并且被拷贝进基于下面描述的选项的当前目录树中。

cpio -i 命令从标准输入读一个归档,这个文档是使用 cpio -o 命令创建的,并且拷贝名字匹配 pattern 参数的文件。pattern 参数是以 常规 ksh 符号表示法给出的正则表达式。 这些文件被拷贝进当前目录树中。使用 ksh 命令中描述的文件名符号表示法,可以使用多个参数。模式可以是特殊字符 * (星号)、?(问号)和[...](方括号和省略号)。模式参数的缺省值是 一个 * (星号),即选择输入中的所有文件。在表达式例如 [a-z] 中, 减号意味着根据当前的整理序列贯穿

文件的许可权就是先前 cpio -o 中的。所有者和组的许可与当前使用者相同。 如果这样,所有者和组的许可将和先前 cpio -o 中产生的相同。以 512 字节的数量报告块。

如果 cpio -i 试图创建一个已经存在的文件并且 存在的那个文件的寿命一样或更小(较新),cpio 将输出一个警告消息并且不替换那个文件。在另一方面 如果被抽取的那个文件比 cpio 归档中的那个文件旧,那么 已经存在的那个文件将被替换,而且命令不发出任何警告消息。

cpio -o(拷贝出)

cpio -o 读标准输入以获取路径名列表并且将这些文件连同路径名和状态信息复制到标准输出上。

cpio -p(拷贝传递)

cpio -p 读标准输入以获得文件的路径名列表 并且把它们拷贝进以 Directory 参数命名的目录中。指定的目录必须已经存在。如果这些路径名包含不存在的目录名,必须使用 d 标志来创建指定的目录。缺省的,仅使用该选项从源文件传送(拷贝) Access Control List's ( ACL )到目标文件。

标志

-a 重新设置源文件的访问时间为先前的访问时间。
-A 附加文件到归档。The -A 选项需要 -O 选项。附加选项 -A 对于 rmt 特殊文件和磁盘无效。
-b 反转每个字中的字节顺序。这个选项只有和 -i 选项一起时有效。
-B 这个选项 和 -C 选项都没有使用时,缺省的缓冲区大小是 512 个字节。但是当 -B 标志被使用时,对于输入/输出操作,缓冲区大小就被设定为 5120 个字节。
-c 为了系统的互操作性和可移植性,以 ASCII 字符格式读或写头文件信息。-c 选项和 -H-6 是互相排斥的。当目标和目的地机器是不同类型时,-c 或者 -H 选项可以被使用。
-C bufsize 对于输入/输出操作的块大小被设置为 bufsize ,这里 bufsize 以正整数形式指示了缓冲区大小。 如果和 -K 一起使用,bufsize 必须是 1K 的倍数。
-d 创建需要的目录。
-E file 指定一个输入文件(file) 包含了一个要从归档中抽取的文件名列表,一行一个文件名。
-f 拷贝除了在 Pattern 参数中的所有文件。
-H hdr 以 hdr 格式读或写头信息。当目标和目的地机器是不同类型时,-h 或者 -c 选项可以被使用。 这个选项和 -c-6 选项是相互排斥的。这种格式允许系统的互操作和可移植性。 cpio 当文件是 ASCII(-c)、CRC (-Hcrc)、tar(-Htar)或 ustar(- Hustar)格式时,实用程序支持大小超过 2 GB 的文件的归档。 hdr 的有效值是:
crc
CRC 相同。 有附加的每个文件校验和的 ASCII 头。 crc 文件格式会处理超过 2 GB 的文件。
ustar
USTAR 相同。IEEE/P1003 交换数据标准头和格式。
tar
TAR 相同。Tar 头和格式。tar 格式用来和 tar 程序兼容。
odc
有小的基础类型的 ASCII 头。
-I file file 的内容作为 一个输入归档。如果 file 是一个字符特殊设备, 而且目前的介质已经读完,替换那个介质并按 Enter 键以继续到下一个介质。这个选项只有和 -i 选项一起时有效。
-k 试图跳过可能碰到的损坏的文件头和输入/输出错误。 这个选项在介质损坏时,让用户只读那些有好头的文件。 这个选项只有和 -i 选项一起时有效。
-K mediasize 指定介质的 1K 倍数的大小。如果和 -C bufsize 一起使用,那么 bufsize 必须是 1K 的倍数。
-l 在可能时硬链接文件而不是拷贝它们。 如果一个文件无法链接,那么它就被拷贝。这个选项只有和 -p 选项一起使用时有效。
-L 这个选项帮助拷贝文件而不是链接。 链接文件的内容和链接名一起被拷贝。没有 -L-l 选项,符号链接将缺省的被维护,由 -p 选项使之成为缺省。
-m 恢复先前的文件修改时间。一个恢复文件的修改时间 和存取时间被设定为它被备份时的修改时间。 目录的修改时间没有保留。
-M message 定义一个换介质时的消息。当 -O-I 选项被给予在一个特殊设备上的 cpio 时, 这个选项可以用来定义当到达介质底部时打印的消息。 %d 可以放在消息中用来打印需要继续的下一个介质的顺序号。
-O file cpio 的输出定向到 file。如果 file 是一个特殊设备并且当前的介质满了, 替换那个介质并按 Enter 键继续下一个介质。 这个选项只有和 -o 选项一起时有效。
-r 交互式重命名文件。如果想跳过一个文件,按 Enter 键。 如果想保留原来的路径名,输入 . (点)。这个选项只有和 -i 选项一起时有效。
-R ID 重新分配每个文件的所有权和组信息给每个有效用户 ID。 这个选项只对 root 用户有效。
-s 在每个半字间交换字节。
注:
-s-S 标志基本上是针对字节先后顺序的。
-S 在每个字间交换半字。
注:
-s-S 标志基本上是针对字节先后顺序的。
-t 创建一个目录。这个操作不创建任何文件。 -t 标志和 -V 标志互相排斥。
-T 把长文件名截短到 14个字符。这个选项只有和 -i 选项一起时有效。
-u 无条件拷贝(通常一个旧文件不会取代一个相同名字的新文件)。
-v 这是打印文件名列表的详细选项。 当和 -t 选项一起使用时, 目录看起来像是 ls -l 命令的一个输出。
-V 这是一个特殊的详细选项,对于每个已读或已写的文件,允许打印一个点。对于用户不打印所有的文件名就可以确定 cpio 在工作是有用的。 注意,-V-v 选项是互相排斥的并且在命令行中哪一个出现的早就被处理,相应的忽略另一个。
-6 处理 UNIX 系统第六版归档格式文件。 这个选项和 -c-H 选项相互排斥。

参数

Directory 指定目录。
Patterns 指定一个或多个模式(如在 ksh 命令中所描述的)和命令一起使用。Patterns 参数的缺省值是一个 * (星号),即选择输入中的所有文件。

退出状态

0
命令成功完成。
> 0
有错误发生。

示例

  1. 拷贝当前目录中所有文件到磁带设备 /dev/rmt0,输入:
    find . | /usr/sysv/bin/cpio -oc >/dev/rmt0
    -c 选项确保那个文件可移植到其它机器上。除了 find 您还可以使用 lscatecho 等等,以管道输送名字列表到 cpio。输出也可以重定向到一个常规 cpio 文件而不是一个设备。
  2. 要抽取一个名为“arfile”的 cpio 归档文件,这个文件是由 cpio 命令创建的,使用下列命令:
    /usr/sysv/bin/cpio -icdI arfile 
    这里,所有的文件都是从 cpio 归档中抽取的,并且 -d 选项确保在需要时创建需要的目录路径。
  3. cpio 归档文件也可以这样抽取:
    /usr/sysv/bin/cpio -icd < arfile 
    -d 选项 确保在当前目录下创建所有需要的目录。 标准输入只有在 -I 标志没有被指定时可以使用。
  4. 要无条件地抽取“arfile”中所有的文件,使用下列命令:
    /usr/sysv/bin/cpio -icduI arfile 
  5. 跳过头损坏的文件,cpio 可以这样使用:
    /usr/sysv/bin/cpio -ickudI arfile 
  6. 当使用 cpio 创建一个归档时,如果归档的文件的存取时间需要重新设置,cpio 可以以下列方式使用:
    ls | /usr/sysv/bin/cpio -oca > arfile 
  7. 从归档“ar”中只抽取和模式“a*”匹配的文件,使用下列命令:
    cat ar | /usr/sysv/bin/cpio -ickud "a*"
    这个命令抽取所有 以字母“a”开始的文件。
  8. 显示归档的文件列表,以下列方式使用 cpio
    cat ar | /usr/sysv/bin/cpio -itv
    详细选项 (-v)确保 -t 选项给出的列表以和 ls -l 命令非常相似的方式列出。
  9. cpio -p 命令可用来拷贝一个目录树到一个新的路径 ,如下:
    find . -print | /usr/sysv/bin/cpio -pd /home/user1/newdir 
    当前目录中的整个目录树都被拷贝到 /home/user1/newdir-d 选项确保必要时创建目录。
  10. 拷贝目录树时,为了保持修改时间和访问控制列表,以下列方式使用 cpio 命令:
    find . -name "*.o" -print | /usr/sysv/bin/cpio -pdlmv /home/user1/newdir 
    在这个示例中,只有目录树下的 .o 文件 被拷贝到 /home/user1/newdir
  11. 附加一个文件列表到匹配一个特殊模式的 cpio 归档中,调用和下列相似的命令:
    ls d* | /usr/sysv/bin/cpio -oAO /tmp/ar 
    在这个示例中,当前目录中所有以“d”开始的文件 将被附加到 cpio 归档。
  12. 要从 cpio 归档中只抽取一个常规文件中的文件列表,使用下列命令:
    cat ar | /usr/sysv/bin/cpio -i -E Efile 
    在这个示例中,cpio 只抽取那些在常规文件“Efile”中列出的文件, 这里假定归档中存在指定的文件名。
  13. 硬链接所有的文件而不是拷贝它们,调用和下列相似的命令:
    ls d* | /usr/sysv/bin/cpio -pdl /home/user2/newdir 
    在这个示例中,-l 标志确保所有的以字符“d”开头的文件名 被硬链接到 /home/user2/newdir 这个指定的目录。跨越文件系统的硬链接是不允许的, 这样 -l 选项就不能在当目的地目录是在另外一个文件系统中时使用。

文件

/usr/sysv/bin/cpio 包含 System V cpio 命令。

相关信息

/usr/bin/cpio 命令、tar 命令、dd 命令、pax 命令。

[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]