cpio(1)

名称cpio - 将文件复制进/复制出归档

用法概要

cpio -i [-bBcdfkmPrsStuvV6@/] [-C bufsize] [-E file]

[-H header] [-I [-M message]] [-R id] [pattern]...

cpio -o [-aABcLPvV@/] [-C bufsize] [-H header]

[-O file [-M message]]

cpio -p [-adlLmPuvV@/] [-R id] directory

描述

cpio 命令将文件复制进/复制出 cpio 归档。cpio 归档可以跨多个卷。通过 –i、–o 和 –p 选项选择要执行的操作。下面的列表描述了每个操作。这些操作是互斥的。

Copy In 模式

cpio –i (copy in) 从标准输入提取文件,标准输入采用的是前面某个 cpio –o 命令的产物。只会选择其名称与 pattern 之一匹配的文件。有关 pattern 的更多信息,请参见 sh(1) 和 OPERANDS。提取的文件将根据下述选项有条件地复制到当前目录树中。文件的权限是前面的 cpio -o 命令的权限。所有者和组与当前用户相同,除非当前用户具有 {PRIV_FILE_CHOWN_SELF} 特权。请参见 chown(2)。如果确实具有该特权,则所有者和用户与从前面的 cpio -o 命令获得的结果相同。请注意,如果 cpio –i 尝试创建的文件已存在并且该现有文件同龄或者更年轻(更新),则 cpio 会输出一条警告消息并且不会替换该文件。–u 选项可用来无条件地覆盖现有文件。

Copy Out 模式

cpio –o (copy out) 从标准输入读取文件路径名列表并将这些文件连同路径名和状态信息以 cpio 归档的形式复制到标准输出。输出将被缺省填充到一个 8192 字节边界中或者填充到用户指定的块大小(采用 –B 或 –C 选项)或者在必要时填充到依赖于设备的某个块大小(例如使用 CTC 磁带时)。

Pass 模式

cpio –p (pass) 从标准输入读取文件路径名列表并根据下述选项有条件地将这些文件复制到目标目录树中。

如果源文件的底层文件系统支持检测由 pathconf(2) 报告的孔,该文件是一个稀疏文件,并且目标文件是可检索的,则稀疏文件中的孔将保留为传递模式,否则将以零来填充孔。

cpio 接受四字节的字。

如果向字符设备进行写入时 (–o) 或者从字符设备进行读取时 (–i),cpio 到达了介质的末尾,并且没有使用 –O 和 –I 选项,则 cpio 将输出以下消息:

To continue, type device/file name when ready.

要继续,您必须更换介质并键入字符特殊设备名,然后按 RETURN。

选项

支持以下选项:

–i

(copy in) 从标准输入读取归档并有条件地提取其中包含的文件,然后将这些文件放置到当前目录树中。

–o

(copy out) 从标准输入中读取文件路径名列表并将这些文件以 cpio 归档的形式复制到标准输出中。

–p

(pass) 从标准输入中读取文件路径名列表并有条件地将这些文件复制到目标目录树中。

以下选项可以按任何顺序附加到 –i、–o 或 –p 选项之后。

–0

读取由一个空字符(而非 NEWLINE)终止的文件名列表,以便可以归档其名称包含 NEWLINES 的文件。将 find 与 –print0 选项一起使用是生成这样的文件名列表的一种方法。

此选项可以在 copy-out 和 copy-pass 模式中使用。

–a

在复制输入文件后重置输入文件的访问时间,使 cpio 的访问不可见。当指定了 cpio –pla 时不会重置链接的文件的访问时间。

–A

将文件附加到归档。–A 选项需要 –O 选项。仅对是文件的归档或者位于硬盘分区上的归档有效。对在归档的现有部分中链接的文件的影响不可预测。

–b

反转每个字内字节的顺序。只能与 –i 选项一起使用。

–B

阻止向/从记录输入/输出 5120 字节。当未使用此选项和 –C 选项时,缺省的缓冲区大小为 8192 字节。–B 不适用于 –p (pass) 选项。

–c

以 ASCII 字符形式读取或写入标头信息以实现可移植性。没有与此标头格式相关的 UID 或 GID 限制。在基于 SVR4 的计算机之间使用此选项,或者在未知计算机之间使用 –H odc 选项。–c 选项表示使用扩展的设备编号,这只在基于 SVR4 的系统上受支持。当在 SunOS 4 或 Interactive UNIX 与 Solaris 2.6 操作环境或兼容版本之间传输文件时,请使用 –H odc。

–C bufsize

阻止向/从记录输入/输出 bufsize 字节,bufsize 将由一个正整数替换。当未使用此选项和 –B 选项时,缺省的缓冲区大小为 8192 字节。–C 不适用于 –p (pass) 选项。

–d

根据需要创建目录。

–E file

指定包含要从归档中提取的文件名列表(一行一个文件名)的一个输入文件 (file)。

–f

复制进所有文件,但 pattern 中的文件除外。有关 pattern 的说明,请参见“操作数”部分。

–H header

读取或写入 header 格式的标头信息。当原始和目标计算机属于不同的类型时,请始终使用此选项或 –c 选项。此选项与 –c 和 –6 选项互斥。

适用于 header 的有效值为:

bar

bar 标头和格式。只能与 –i 选项一起使用(只读)。

crc | CRC

具有扩展设备编号和一个附加的每文件校验和的 ASCII 标头。没有与此标头格式相关的 UID 或 GID 限制。

odc

具有小设备编号的 ASCII 标头。这是 IEEE/P1003 数据交换标准 cpio 标头和格式。它具有任何标头格式的最大范围的可移植性。它是用于在遵守 POSIX 的系统之间传输文件的正式格式(请参见 standards(5))。请使用此格式与 SunOS 4 和 Interactive UNIX 进行通信。此标头格式允许将最大为 262143 的 UID 和 GID 存储在标头中。

tar | TAR

tar 标头和格式。这是旧式的 tar 标头格式,允许将最大为 2097151 的 UID 和 GID 存储在标头中。提供它只是为了读取传统归档文件,即与选项 –i 一起使用。

同时指定此归档格式和选项 –o 等效于指定 “ustar” 格式:输出归档为 ustar 格式,并且必须使用 –H ustar 进行读取。

ustar | USTAR

IEEE/P1003 数据交换标准 tar 标头和格式。此标头格式允许将最大为 2097151 的 UID 和 GID 存储在标头中。

其 UID 和 GID 大于上述限制的文件将以 UID 和 GID 60001 进行归档。要传输大文件(8 Gb — 1 字节),则标头格式只能为 tar|TAR、ustar|USTAR 或 odc。

–I file

将 file 的内容读取为输入归档,而不是标准输入。如果 file 是一个字符特殊设备,并且已完全读取了当前介质,请更换介质并按 RETURN 以继续读取下一介质。此选项仅可与 –i 选项一起使用。

–k

尝试跳过可能会遇到的已损坏文件和 I/O 错误。如果您要从已损坏的或乱序的介质复制文件,则此选项允许您仅读取标头良好的那些文件。对于包含其他 cpio 归档的 cpio 归档,如果遇到了错误,cpio 可以提前终止。cpio 将查找下一个良好的标头(这可能是一个较小归档的标头)并且在到达较小归档的尾部时终止。只能与 –i 选项一起使用。

–l

在 pass 模式中,请尽可能在源和目标之间创建硬链接。如果还指定了 –L 选项,则硬链接指向由符号链接引用的文件。否则,硬链接指向符号链接本身。只能与 –p 选项一起使用。

–L

跟随符号链接。如果遇到了指向目录的符号链接,则会使用链接的名称归档链接引用的目录。否则,将使用链接的名称归档链接引用的文件。

–m

保留以前的文件修改时间。此选项对正在复制的目录不起作用。

–M message

定义当切换介质时要使用的 message。当使用 –O 或 –I 选项并指定了一个字符特殊设备时,您可以使用此选项来定义当到达了介质的末尾时要输出的消息。可以在 message 中放置一个 %d 以输出需要继续使用的下一个介质的序号。

–O file

将 cpio 的输出定向到 file 而不是标准输出。如果 file 是一个字符特殊设备并且当前介质已满,请更换介质并键入一个回车符以继续使用下一个介质。只能与 –o 选项一起使用。

–P

保留 ACL。如果为输出使用了此选项,则会将现有的 ACL 连同其他属性(扩展属性除外)一起写入到标准输出。ACL 将被创建为具有特殊文件类型的特殊文件。如果为输入使用了此选项,则会从标准输入中提取现有的 ACL 连同其他属性。此选项可以识别特殊文件类型。请注意,如果以前版本的 cpio 提取具有 ACL 的 cpio 归档,则会发生错误。此选项不应当与 –c 选项一起使用,因为可能不是所有系统都提供了 ACL 支持,因此不可移植。可使用 ASCII 标头实现可移植性。

–r

以交互方式重命名文件。如果用户单独键入了一个回车符,则会跳过文件。如果用户键入了一个 ``.'',则会保留原始路径名。不可与 cpio –p 一起使用。

–R id

重新向用户 ID 分配每个文件的所有权和组信息。(ID 必须是 passwd 数据库中的一个有效的登录 ID。)只有当该 id 是调用用户或超级用户时,此选项才有效。请参见“附注”部分。

–s

交换每半个字内的字节。

–S

交换每个字内的半个字。

–t

输出包含输入内容的表。如果内容表中的任何文件具有扩展属性,则还会列出这些扩展属性。不会创建文件。–t 和 –V 是互斥的。

–u

无条件地进行复制。通常,较旧的文件不会被同名的较新文件替换,但是较旧的目录会更新为较新的目录。

–v

详细模式。输出文件和扩展属性名的列表。当与 –t 选项一起使用时,内容表看起来像 ls –l 命令的输出(请参见 ls(1))。

–V

特别详细。为读取或写入的每个文件输出一个点。非常适用于在不输出所有文件名的情况下让用户确信 cpio 正在工作。

–6

处理 UNIX 系统第六版归档格式的文件。只能与 –i 选项一起使用。此选项与 –c 和 –H 选项互斥。

–@

在归档中包括扩展属性。缺省情况下,cpio 不会将扩展属性放置在归档中。使用此标志时,cpio 会在文件上查找要放置在归档中的扩展属性并且像常规文件一样将其添加到归档中。扩展属性文件将作为具有特殊文件类型的特殊文件添加到归档中。当 –@ 标志与 –i 或 –p 一起使用时,它指示 cpio 将扩展属性数据与常规文件数据一起恢复。只能作为常规文件提取操作的一部分从归档中提取扩展属性文件。显式提取属性记录的尝试将被忽略。

–/

在归档中包括系统属性。缺省情况下,cpio 不会将系统属性放置在归档中。使用此标志时,cpio 会在文件上查找要放置在归档中的系统属性并且像常规文件一样将其添加到归档中。扩展属性文件将作为具有特殊文件类型的特殊文件添加到归档中。当 –/ 标志与 –i 或 –p 一起使用时,它指示 cpio 将扩展系统属性数据与常规文件数据一起恢复。只能作为常规文件提取操作的一部分从归档中提取扩展系统属性文件。显式提取属性记录的尝试将被忽略。

操作数

支持下列操作数:

directory

要用作 cpio –p 的目标的现有目录的路径名。

pattern

一些表达式,其使用的模式匹配表示法与 shell 用于文件名模式匹配的表示法(请参见 sh(1))类似(类似于正则表达式)。系统定义了以下元字符:

*

匹配任何字符串,包括空字符串。

?

匹配任何单个字符。

[...]

匹配其中包围的任意一个字符。由 `−' 分隔的字符对将匹配该对之间的任何符号(内含),如系统缺省整理序列所定义。如果左 `[' 后的第一个字符是 `!',则结果不确定。

!

!(叹号)的意思为不是。例如,!abc* 模式将排除以 abc 开头的所有文件。

在 pattern 中,元字符 ?、* 和 [ . . .] 匹配斜杠 (/) 字符,反斜杠 (\) 是一个转义字符。可以指定 pattern 的多个实例,并且如果未指定 pattern,则 pattern 的缺省值为 *(即选择所有文件)。

每个模式都必须括在双引号中。否则,可能会使用当前目录中某个文件的名称。

用法

有关 cpio 遇到大于或等于 2 GB(231 字节)文件时行为的说明,请参见 largefile(5)。

示例

以下示例显示了 cpio 的三种用法。

示例 1使用标准输入

example% ls | cpio -oc > ../newfile

如以上示例所示,当通过管道将标准输入定向到 cpio –o 时,它将文件组合到一起,以便它们可以被定向 (>) 到单个文件 (../newfile)。–c 选项确保文件可以移植到其他计算机(与 –H 选项一样)。您可以使用 find(1)、echo(1)、cat(1) 等等(而非 ls(1))来将名称列表定向到 cpio。您可以将输出定向到设备而非文件。

示例 2将文件提取到目录中

example% cat newfile | cpio -icd "memo/a1" "memo/b*"

在此示例中,cpio –i 使用 cpio –o 的输出文件(用 cat 命令通过管道定向的),提取与模式(memo/a1、memo/b*)匹配的那些文件,根据需要在当前目录下创建目录(–d 选项),并将文件放置到合适的目录中。如果输入文件创建有可移植的标头,请使用 –c 选项。如果没有指定模式,则会将 newfile 中的所有文件放置到目录中。

示例 3将文件复制或链接到另一目录

example% find . -depth -print | cpio -pdlmv newdir

在此示例中,cpio –p 接受通过管道定向到它的文件名并将这些文件复制或链接到(–l 选项)另一目录(newdir)。–d 选项指示根据需要创建目录。–m 选项指示保留修改时间。(使用 find(1) 的 –depth 选项为 cpio 生成路径名非常重要。这将消除 cpio 试图在只读目录下创建文件时可能会出现的问题。)目标目录 newdir 必须存在。

请注意,当您将 cpio 与 find 一起使用时,如果将 –L 选项与 cpio 一起使用,则必须将 –follow 选项与 find 一起使用,反之亦然。否则,将会出现非预期的结果。

对于多卷盘归档,请卸载旧卷,挂载新卷,然后通过键入下一个设备的名称(可能与第一个卷盘相同)继续使用下一个磁带。要停止,请键入一个 RETURN,cpio 将终止。

环境变量

有关影响 cpio 执行的以下环境变量的说明,请参见 environ(5):LC_COLLATE、LC_CTYPE、LC_MESSAGES、LC_TIME、TZ 和 NLSPATH。

TMPDIR

缺省情况下,cpio 在 /var/tmp 中创建其临时文件。否则,它将使用 TMPDIR 指定的目录。

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

属性

有关下列属性的说明,请参见 attributes(5):

属性类型

属性值

可用性

system/core-os

CSI

Enabled(已启用)

接口稳定性

Committed(已确定)

另请参见

附注

cpio 归档中允许的最大路径名长度是由所涉及的标头类型确定的。下表显示了每个受支持归档标头类型的正确值。

标头类型

命令行选项

最大路径名长度

BINARY

“–o”

256

POSIX

“–oH odc”

256

ASCII

“–oc”

1023

CRC

“–oH crc”

1023

USTAR

“–oH ustar”

255

当指定了命令行选项 “–o –H tar” 时,所创建的归档是 USTAR 类型的。这意味着使用命令行选项 “–i – H tar” 读取此同一归档是错误的。应当使用命令行选项 “–i –H ustar” 读取归档。选项 “–i –H tar” 引用较旧的 tar 归档格式。

如果文件的 UID 或 GID 太大,选定的标头格式无法将其容纳,则会输出一条错误消息。可使用 –H crc 或 –c 创建允许所有 UID 或 GID 值的归档。

只有超级用户可以复制特殊文件。

块是以 512 字节为单位报告的。

如果文件具有 000 权限,包含 0 个字符以上的数据,并且用户不是 root,则不会保存或恢复该文件。

如果 cpio 是具有 {PRIV_FILE_CHOWN_SELF} 特权的用户在 Copy In 或 Pass 模式下调用的,特别是在 {_POSIX_CHOWN_RESTRICTED} 没有生效的系统上(有效地向所有用户授予了此特权而未被覆盖时),提取的或复制的文件会具有由原始归档文件的权限确定的所有者和组,而这可能不同于调用用户确定的所有者和组。这可能不是用户想要的结果。如果您指定了用户的 id,如果需要,可以使用 –R 选项来保留文件所有权。

存储在标头 (/usr/include/archives.h) 中的 inode 编号是一个无符号短整数(2 个字节)。这将 inode 编号的范围限制为从 0 到 65535。硬链接的文件必须位于此 inode 范围内。在来自不同供应商的计算机之间移动 cpio 归档时,这可能是个问题。

当将文件从磁带检索或复制到硬盘时,必须使用与之前将文件从硬盘复制到磁带时使用的分块因子相同的分块因子。因此,必须指定 –B 或 –C 选项。

在 –p 和 –o 处理期间,cpio 会将 stdin 上提供的文件列表缓存到一个临时文件中。

对于大文件,应当使用新的 pax(1) 格式以及支持该格式的某个命令(例如 tar)。cpio 命令不再是当前 POSIX 标准的一部分并且已过时,建议使用 pax。

oracle cpio,cpio - 手册页部分 1: 用户命令相关推荐

  1. Linux下dislocate命令用法,在 Linux 中遨游手册页的海洋 | Linux 中国

    原标题:在 Linux 中遨游手册页的海洋 | Linux 中国 Linux 系统上的手册页可以做的不仅仅是提供特定命令的信息.它们可以帮助你发现你没有意识到的命令. https://linux.cn ...

  2. c oracle代码,实现单一源代码 - Oracle® Developer Studio 12.5:C 用户指南

    8.2 实现单一源代码 以下各节介绍可用于编写支持 32 位和 64 位编译的单一源代码的一些可用资源. 8.2.1 派生类型 使用系统派生类型使代码对于 32 位和 64 位编译环境均安全,这是一种 ...

  3. cgroups(7)— Linux中文手册页

    CGROUPS(7)Linux程序员手册CGROUPS(7) NAME         顶部 cgroups-Linux控制组 说明         顶部 控制组(通常称为cgroup)是Linux内 ...

  4. 如何在Linux上创建手册页

    Fatmawati Achmad Zaenuri/Shutterstock Fatmawati Achmad Zaenuri / Shutterstock Want your new Linux pr ...

  5. 谷歌地球使用手册_如何使用手册页:比Google搜索更快

    谷歌地球使用手册 养成使用谷歌搜索您想了解的关于Linux中的命令或操作的习惯是很容易的,但是我认为还有更好的东西:生动活泼,完整的参考资料, 手册页 ,这是手册页的缩写. 手册页的历史可以追溯到Li ...

  6. linux安装tldr 中文,分享|TLDR 页:Linux 手册页的简化替代品

    在终端上使用各种命令执行重要任务是 Linux 桌面体验中不可或缺的一部分.Linux 这个开源操作系统拥有丰富的命令,任何用户都无法全部记住所有这些命令.而使事情变得更复杂的是,每个命令都有自己的一 ...

  7. oracle 被另一用户锁定,Oracle报错记录被另外一个用户锁定的解决方案

    原因 当一个用户对数据进行修改时,若没有进行提交或者回滚,Oracle不允许其他用户修改该条数据,在这种情况下修改,就会出现:"记录被另外一个用户锁定"错误. 解决 查询用户.数据 ...

  8. oracle创建数据库、表空间、用户并授权

    oracle创建数据库.表空间.用户并授权 在安装完Oracle数据库软件之后可以使用默认的数据库orcl,也可以根据需要创建自定义的数据库.表空间用于对数据库中的资源进行分类,每个用户都有默认的表空 ...

  9. oracle:ORA-01940无法删除当前已连接用户的解决方案

    oracle:ORA-01940无法删除当前已连接用户的解决方案 参考文章: (1)oracle:ORA-01940无法删除当前已连接用户的解决方案 (2)https://www.cnblogs.co ...

最新文章

  1. tf.nn.relu
  2. Design Pattern: Singleton 模式
  3. 【C++】35.判断一个文件是否存在、 查找字符串中的子串
  4. WSDL SOAP 绑定
  5. 文本标点符号在前面怎么改_这三个标点符号,为什么写错的人越来越多?
  6. vue3安装_Vue 3.0正式发布了!
  7. 内置函数filter()
  8. oh my zsh使用频率前 20 的命令
  9. 手机号码好坏什么软件测试,测试你的手机号码好不好(很准哦)
  10. Stylus Studio 2010 XML 的激活码
  11. fgo日服服务器维护,FGO国服和日服哪个福利更好 圣晶石维护补偿对比
  12. 软件测试-xx银行面试经验过程详细版
  13. 一起找BUG,谷歌推出全新漏洞悬赏平台
  14. python中pd是什么意思_python pd
  15. Simple Torrent:一个支持边下边播、无版权限制和自动上传的BT离线下载程序
  16. java 红外光谱数据库_【分享】免费的20个谱图数据库 - 晶体 - 小木虫 - 学术 科研 互动社区...
  17. React.createClass()方法
  18. 遗传算法(Genetic Algorithm)之deap学习笔记(一): 基础概念
  19. composer更换镜像源
  20. mvcmvpmvvm

热门文章

  1. 谈谈多门程序语言的学习策略之一
  2. 考研数据结构の基础概念
  3. ChatGPT:语音翻译的全新解决方案
  4. webrtc 状态获取
  5. 云原生领域再添重磅开源项目:腾讯发布 K8s 多集群管理开源项目 Clusternet
  6. Navigator.clipboard剪切板 API 可用于实现剪切、复制、粘贴的功能。
  7. 光标跟随(Cursor following)
  8. 信号(三)Kill函数和Kill命令
  9. matlab 转换为hvs,MATLAB转换集锦
  10. Greenplum的工作负载及资源管理