把文件拷贝进出归档存储器及目录。 本文档描述了 AIX cpio 命令和System V cpio 命令。
cpio -o [ a ] [ c ] [ -E{force|ignore|warn} ] [ v ] [ B | C Value ] <FileName >Output
cpio -i [ b ] [ c ] [ d ] [ -E{force|ignore|warn} ] [ f ] [ m ] [ M ] [ r ] [ s ] [ t ] [ u ] [ v ] [ S ] [ 6 ] [ B | C Value ] [ Pattern... ] <Input
cpio -p [ a ] [ d ] [ -E{force|ignore|warn} ] [ l ] [ m ] [ M ] [ u ] [ v ] Directory <FileName
cpio 命令把文件从 cpio 归档中拷贝进出。cpio 归档可能跨越多个卷。-i、-o 和 -p 标志选择了要执行的操作。
注: 如果您把输出从 cpio 命令重定向到一个特殊文件(设备),您应该把输出重定向到一个原始设备而不是一个块设备。因为 写块设备是异步地完成的,没有办法知道是否到达了 设备的末端。
注:
- cpio 命令由于 XPG/4 和 POSIX.2 标准的限制,当文件的大小超过 2G 时是不能启用的。
- cpio 不保存任何稀疏分配的文件的稀疏特性。 任何在恢复前原本稀疏的文件 将在文件系统中根据大小分配所有的空间。
cpio -o 命令从标准输入中读出文件路径名并且把这些文件连同路径名和状态信息拷贝到标准输出中。避免给予cpio 命令由许多唯一链接的文件组成的路径名,因为可能没有足够的存储器来跟踪它们,并可能会导致链接信息的丢失。
cpio -i 命令从标准输入中读入一个由 cpio -o 命令创建的归档,并且从中拷贝和 Pattern 参数相匹配的文件连同名称。这些文件被拷贝进当前目录树中。您可以列出多个的 Pattern 参数,通过使用 ksh 命令中描述的文件名符号表示法。注意在这个应用程序中,特殊字符 * (星号),? (问号),和 [...] (方括号和省略号)除了在 ksh 命令中描述的使用,还匹配路径名中的 / (斜杠)。 Pattern 参数的缺省值是 * (星号),即选择输入中所有文件。在表达式例如 [a-z] 中, 减号意味着根据当前的整理序列贯穿。
一个整理序列可以定义字符范围中使用的同等类。
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 字节的块输入输出到一个记录。
注:当使用 B 或 C 选项来抽取或是创建一个磁带归档时,块因子数必须是该磁带设备的物理块大小的倍数。 |
c | 以 ASCII 字符的形式读写头信息。如果 cpio 归档是使用 c 标志创建的, 它必须使用 c 标志来抽取。 |
CValue | 执行由 Value 参数定义的 512 字节的倍数个字节到一个记录的块输入输出。例如,-C2 标志改变块输入输出到记录的大小为 1024 字节。 |
d | 创建需要的目录。 |
-E | -E 选项需要下列参数中的一个。
如果您省略了 -E 选项,则warn 是缺省的 cpio 行为。
|
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 | 有错误发生。 |
cpio -ov <filenames >/dev/rfd0
以压缩格式拷贝有 filenames 文件中列出的路径名的文件到磁盘(>/dev/rfd0)上。v 标志使得 cpio 命令显示它所拷贝的每一个文件的名字。这个命令 在拷贝文件的备份时有用。磁盘必须已经格式化, 但不必包含一个文件系统或已被安装。
注:uid 和 gid 的大小超过 65535 的文件不能用 cpio 命令归档。 在这种情况下,使用者应该使用 backup 和 restore。
ls *.c | cpio -ov >/dev/rfd0
拷贝当前目录中所有名字以 .c 结尾的文件。
find . -print | cpio -ov >/dev/rfd0
这将保存以当前目录(.)开始的目录树,并且包含它的所有子目录和文件。 输入这个命令会更快:
find . -cpio /dev/rfd0 -print
-print 条目显示每一个被拷贝的文件的名字。
cpio -itv </dev/rfd0
这显示先前保存到 /dev/rfd0 的,cpio 命令格式的文件的目录。这个清单和 ls -l 命令生成的长目录清单相似。只列出文件路径名,只要使用 -it 标志。
cpio -idmv </dev/rfd0
这将把先前用 cpio 命令保存到 /dev/rfd0 文件的文件拷贝回文件系统(指定 -i 标志)。d 标志在目录树被保存时,允许 cpio 命令创建适合的目录。 m 标志在保存文件时,保持最后的修改时间有效。 v 标志 使得 cpio 命令显示每一个被拷贝的文件名。
cpio -ir </dev/rfd0
-r 标志使得 cpio 命令 询问您是否要在从磁盘拷贝文件前重命名每个文件。例如,消息:
Rename <prog.c>
询问 是否要在以 prog.c 名字保存的文件被拷贝时给它一个新的名字。如果想重命名这个文件,输入新名字,按 Enter 键。如果想保持同样的名字,必须再次输入那个名字。要根本避免拷贝那个文件,按 Enter 键。
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 命令。 |
系统管理备份概述,在 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 系统用户指南:操作系统与设备》 中,提供关于操作文件的信息。
把文件拷贝进出归档存储器及目录。
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(拷贝进)从标准输入中抽取文件 (只要 -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 -p 读标准输入以获得文件的路径名列表 并且把它们拷贝进以 Directory 参数命名的目录中。指定的目录必须已经存在。如果这些路径名包含不存在的目录名,必须使用 d 标志来创建指定的目录。缺省的,仅使用该选项从源文件传送(拷贝) Access Control List's ( ACL )到目标文件。
Directory | 指定目录。 |
Patterns | 指定一个或多个模式(如在 ksh 命令中所描述的)和命令一起使用。Patterns 参数的缺省值是一个 * (星号),即选择输入中的所有文件。 |
find . | /usr/sysv/bin/cpio -oc >/dev/rmt0-c 选项确保那个文件可移植到其它机器上。除了 find 您还可以使用 ls、cat、echo 等等,以管道输送名字列表到 cpio。输出也可以重定向到一个常规 cpio 文件而不是一个设备。
/usr/sysv/bin/cpio -icdI arfile这里,所有的文件都是从 cpio 归档中抽取的,并且 -d 选项确保在需要时创建需要的目录路径。
/usr/sysv/bin/cpio -icd < arfile-d 选项 确保在当前目录下创建所有需要的目录。 标准输入只有在 -I 标志没有被指定时可以使用。
/usr/sysv/bin/cpio -icduI arfile
/usr/sysv/bin/cpio -ickudI arfile
ls | /usr/sysv/bin/cpio -oca > arfile
cat ar | /usr/sysv/bin/cpio -ickud "a*"这个命令抽取所有 以字母“a”开始的文件。
cat ar | /usr/sysv/bin/cpio -itv详细选项 (-v)确保 -t 选项给出的列表以和 ls -l 命令非常相似的方式列出。
find . -print | /usr/sysv/bin/cpio -pd /home/user1/newdir当前目录中的整个目录树都被拷贝到 /home/user1/newdir。-d 选项确保必要时创建目录。
find . -name "*.o" -print | /usr/sysv/bin/cpio -pdlmv /home/user1/newdir在这个示例中,只有目录树下的 .o 文件 被拷贝到 /home/user1/newdir。
ls d* | /usr/sysv/bin/cpio -oAO /tmp/ar在这个示例中,当前目录中所有以“d”开始的文件 将被附加到 cpio 归档。
cat ar | /usr/sysv/bin/cpio -i -E Efile在这个示例中,cpio 只抽取那些在常规文件“Efile”中列出的文件, 这里假定归档中存在指定的文件名。
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 命令。