CPIO(1)

NAME
cpio - 存取归档包中的文件

总览 (SYNOPSIS)
cpio {-o|--create} [-0acvABLV] [-C bytes] [-H format] [-M message] [-O [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--format=format] [--message=message] [--null] [--reset-access-time] [--verbose] [--dot] [--append] [--block-size=blocks] [--dereference] [--io-size=bytes] [--quiet] [--force-local] [--help] [--version] < name-list [> archive] cpio {-i|--extract} [-bcdfmnrtsuvBSV] [-C bytes] [-E file] [-H format] [-M message] [-R [user][:.][group]] [-I [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--make-directories] [--nonmatching] [--preserve-modification-time] [--numeric-uid-gid] [--rename] [--list] [--swap-bytes] [--swap] [--dot] [--unconditional] [--verbose] [--block-size=blocks] [--swap-halfwords] [--io-size=bytes] [--pattern-file=file] [--format=format] [--owner=[user][:.][group]] [--no-preserve-owner] [--message=message] [--force-local] [--no-absolute-filenames] [--sparse] [--only-verify-crc] [--quiet] [--help] [--version] [pattern...] [< archive] cpio {-p|--pass-through} [-0adlmuvLV] [-R [user][:.][group]] [--null] [--reset-access-time] [--make-directories] [--link] [--quiet] [--preserve-modification-time] [--unconditional] [--verbose] [--dot] [--dereference] [--owner=[user][:.][group]] [--no-preserve-owner] [--sparse] [--help] [--version] destination-directory < name-list

描述 (DESCRIPTION)
本手册页 描述 GNU 版本 的 cpio. cpio 可以 从 cpio 或 tar 格式 的 归档包(archive) 中 读写 文件, 归档包 是 一种文件, 它 由 归档文件 及其 相关信息 组成, 例如 文件名, 属主, 时标 (timestamp), 和 访问权限. 归档包 可以 是 磁盘上的 文件, 也可以 是 磁带或管道. cpio 有 三种 操作模式.

在 copy-out 模式中, cpio 把 文件 复制到 归档包 中. 它 从 标准输入 读取 文件名列表, 每行一个文件名. 生成的 归档包 写到 标准输出. 产生 文件名列表 的 典型方法 是 使用 find 命令; 你 可能 要在 find 后面 用上 -depth 选项, 减少 因为 进入 没有 访问权限 的 目录 引起 的 麻烦.

在 copy-in 模式中, cpio 从 归档包 读取 文件, 或者 列出 归档包 的 内容, 归档包 来自 标准输入. 任何 非选项 命令行参数 被视为 shell 的 通配符模式串 (globbing pattern); 在 归档包 中, 只 读取 文件名 匹配 这些 模式串 的 文件. 和 shell 环境 不一样, 文件名 起始处 的 '.' 可以 匹配 模式串 起始处 的 通配符, 文件名中 的 '/' 也可以 匹配 通配符. 如果 没有 给出 模式串, 那么 读取 所有 文件.

在 copy-pass 模式中, cpio 把 文件 从 一棵目录树 复制到 另一棵, 它 结合了 copy-in 和 copy-out 的 操作, 但是 没有 使用 归档包. cpio 从 标准输入 读取 欲复制的 文件名列表; 目标目录 是 非选项命令行参数.

cpio 支持 下列的 归档 格式: binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, 和 POSIX.1 tar. "binary" 格式 是 过时 格式, 因为 它 保存 文件信息 的 方法 无法 应用在 不同体系 的 机器 上. "old ASCII" 格式 可以 跨平台 使用, 但是 不能 用于 超过 65536 个 i 节点 的 文件系统 中. "new ASCII" 格式 可以 跨平台 使用, 也 适用于 任意大小 的 文件系统 上, 但 不是 所有 版本 的 cpio 都 支持, 目前 只有 GNU 和 System VR4 的 cpio 能够 支持 "new ASCII" 格式. "crc" 格式 类似于 "new ASCII" 格式, 而且 对每个 文件 计算 校验和; cpio 在 创建 归档包 时 计算 校验和, 解开 文件 时 进行 校验. "HPUX" 格式 用于 兼容 HP UNIX 的 cpio, 它 用了 独特的方法 保存 设备文件.

"tar" 格式 用以 兼容 tar 程序. 它 不能 对 文件名 超过 100 个 字符 的 文件 归档, 也 不能 对 特殊文件 (块设备 或 字符设备) 归档. "POSIX.1 tar" 格式 不能 对 文件名 超过 255 个 字符 的 文件 归档 (小于 255, 除非 文件名 的 最右边 有一个 "/").

缺省情况下, cpio 为了 兼容 老式的 cpio 程序, 创建 "binary" 格式 的 归档包. 当展开 归档包 时, cpio 能够 自动识别 归档包 的 格式, 而且 能够 读取 不同 字节顺序 的 机器 上 创建 的 归档包.

cpio 的 某些 选项 只能 用在 相应的 操作模式 上; 参见 总览 小节, 里面 列出了 什么模式 可以用 什么选项.

  选项 (OPTIONS)

-0, --null
    在 copy-out 和 copy-pass 模式中, 认为 输入的 文件名 以 null 字符 结尾, 而不是 换行符, 这样 即使 文件名 中 包含 换行符, 也 不影响 归档. GNU find 是 生成 null 结尾 文件名 列表 的 方法 之一.

-a, --reset-access-time
    读取完 文件 后 重置 文件的访问时间, 这样 看上去 就象 没有 访问 过 这个 文件.

-A, --append
    添加到 现存的 归档包 中. 仅用于 copy-out 模式. 该 归档包 必须是 用 -O 或 -F (--file) 选项 生成的 磁盘文件.

-b, --swap
    在 copy-in 模式中, 颠倒 数据中 字 的 字节 顺序. 相当于 -sS. 使用 这个 选项 可以 在 大端数 和 小端数 机器 之间 转换 32 位 整数.

-B  把 I/O 块 大小 设置成 5120 字节. 最初的 块大小 是 512 字节.

--block-size=BLOCK-SIZE
    设置 I/O 块 大小 为 BLOCK-SIZE * 512 字节.

-c  使用 老式的 跨平台 (ASCII) 归档 格式.

-C IO-SIZE, --io-size=IO-SIZE
    设置 I/O 块 大小 为 IO-SIZE 字节.

-d, --make-directories
    在 需要的地方 创建 起始目录.

-E FILE, --pattern-file=FILE
    在 copy-in 模式中, 从 FILE 里 读取 用于 匹配 文件名 的 模式串. FILE 的 内容 如同 cpio 的 非选项 参数.

-f, --nonmatching
    只复制 那些 不匹配 给定的 模式串 的 文件.

-F, --file=archive
    使用 归档包文件, 而不是 标准输入或输出. 如果 把 其他 机器上 的 磁带机 作成 归档包文件, 文件名 要用 "HOSTNAME:" 开始. 主机名 前面 可以 加上 用户名 和 一个 '@', 作为 访问 远程 磁带机 的 用户 (如果 你有 这样的 权限, 一般 在 用户的 ~/.rhosts 文件中 会有 这么 一项).

--force-local
    和 -F, -I, 或 -O, 一起用, 可以 把 归档包文件 看作 本地文件, 即使 文件名 中 含有 冒号, 一般说来 冒号 指出 一个 远程主机 的 存在.

-H FORMAT, --format=FORMAT
    使用 归档格式 FORMAT. 有效 的 格式 列在 下面, 大小写 均可. "copy-in" 模式 的 缺省动作 是 自动检测 归档格式, "copy-out" 的 缺省格式 是 "bin".

    bin 老式的 binary 格式.

    odc 老式的 (POSIX.1) 跨平台 格式.

    newc
        新型 (SVR4) 跨平台 格式, 支持 大于 65536 i节点 的 文件系统.

    crc 新型 (SVR4) 跨平台 格式, 并且 计算 校验和.

    tar 老式的 tar 格式.

    ustar
        POSIX.1 tar 格式, 也能 识别 GNU tar 归档文件, 它们 相似 但不全相同.

    hpbin
        HP UNIX 上的 cpio 使用的 老式的 binary 格式. (用 独特的方法 储存 设备文件)

    hpodc
        HP UNIX 上的 cpio 使用的 跨平台 格式. (用 独特的方法 储存 设备文件)

-i, --extract
    进入 copy-in 模式.

-I archive
    使用 归档包文件, 而不是 标准输入. 如果 把 其他 机器上 的 磁带机 作成 归档包文件, 文件名 要用 "HOSTNAME:" 开始. 主机名 前面 可以 加上 用户名 和 一个 '@', 作为 访问 远程 磁带机 的 用户 (如果 你有 这样的 权限, 一般 在 用户的 ~/.rhosts 文件中 会有 这么 一项).

-k  无效操作; 只是 用来 兼容 其他 版本 的 cpio.

-l, --link
    如果有可能, 连接 文件, 而不是 复制.

-L, --dereference
    解除 符号连接 的 关联 (复制 符号连接 指向的 文件, 而不是 连接 本身).

-m, --preserve-modification-time
    当 创建 文件 时, 保留 以前的 文件修改时间.

-M MESSAGE, --message=MESSAGE
    当 备份 媒体 (例如 磁带或软盘) 到达 卷尾时, 显示 一条 消息, 提醒 用户 插入 下一卷. 如果 MESSAGE 包含 字符串 "%d", 它 替换成 当前 卷号 (从 1 开始).

-n, --numeric-uid-gid
    以 繁琐模式 (verbose) 显示 内容 时, 用 数字 显示 UID 和 GID, 而 不是 名称.

--no-absolute-filenames
    在 copy-in 模式中, 在 当前目录中 创建 所有 相关 文件, 即使 它们 在 归档包中 有 绝对路径名.

--no-preserve-owner
    在 copy-in 和 copy-pass 模式中, 不改变 文件 的 属主关系 (译注: 疑为不保留); 使 它们 属于 展开 它们 的 用户. 这是 普通用户 的 缺省行为, 因此 System V 的 用户 不致于 无意中 把 文件 送人.

-o, --create
    进入 copy-out 模式.

-O archive
    使用 归档包文件, 而不是 标准输出. 如果 把 其他 机器上 的 磁带机 作成 归档包文件, 文件名 要用 "HOSTNAME:" 开始. 主机名 前面 可以 加上 用户名 和 一个 '@', 作为 访问 远程 磁带机 的 用户 (如果 你有 这样的 权限, 一般 在 用户的 ~/.rhosts 文件中 会有 这么 一项).

--only-verify-crc
    当以 copy-in 模式 读入 CRC 格式 的 归档包 时, 不展开 里面的文件, 只是 测试 文件的 CRC 码.

-p, --pass-through
    进入 copy-pass 模式.

--quiet
    不显示 复制的 块数.

-r, --rename
    交互式 文件 改名.

-R [user][:.][group], --owner [user][:.][group]
    在 copy-out 和 copy-pass 模式中, 把 所有文件 的 属主 设置为 指定的 用户 和/或 用户组. 无论 用户 还是 用户组 都必须 存在. 如果 省略 用户组, 但却 给出了 分隔符 ":" 或 ".', 则 使用 该 用户 的 登录用户组. 只有 超级用户 能够 改变 文件的属主.

--sparse
    在 copy-out 和 copy-pass 模式中, 把 大块 数据0 的 文件 写成 稀疏文件 (sparse file).

-s, --swap-bytes
    在 copy-in 模式中, 交换 文件中 每一个 半字(字节对) 中的 字节.

-S, --swap-halfwords
    在 copy-in 模式中, 交换 文件中 每一个 字(4字节) 中的 半字.

-t, --list
    显示 输入(归档包) 的 内容.

-u, --unconditional
    替换 所有 文件, 不再提问 是否 用 旧文件 替换 已经存在的 新文件.

-v, --verbose
    列出 处理的文件, 加上 -t 选项 可以 列出 一个 'ls -l' 风格的列表. 在一个 归档包 的 内容 详细列表 (verbose) 中, 如果 本地系统 不存在 归档文件的 用户和用户组 名称, 就用 其数字 UID和GID 对应于 本地系统的 用户和用户组 名称 代替.

-V --dot
    每处理一个文件, 显示一个 ".".

--version
    显示 cpio 程序 的 版本号, 然后退出.

[中文版维护人]
徐明 <xuming@iname.com>

[中文版最新更新]
2001/09/25

《中国Linux论坛man手册页翻译计划》
http://cmpp.linuxforum.net

跋
本页面中文版由中文 man 手册页计划提供。
中文 man 手册页计划：https://github.com/man-pages-zh/manpages-zh