mirror of https://github.com/Black-Gold/Learn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6.0 KiB
6.0 KiB
cpio
说明
cpio命令 将归档文件及从包中提取文件,cpio命令可以复制文件到归档包中,或者从归档包中复制文件
选项
cpio [OPTION...] [目标目录]
主操作模式
-i, --extract 从包中提取文件 (运行 copy-in 模式)
-o, --create 创建包 (运行 copy-out 模式)
-p, --pass-through 运行 copy-pass 模式
-t, --list 打印输入内容列表
应用于所有模式的选项:
--block-size=BLOCK-SIZE 设置 I/O 块大小为 BLOCK-SIZE * 512
字节
-B 设置 I/O 块大小为 5120 字节
-c Identical to "-H newc", use the new (SVR4)
portable format.If you wish the old portable
(ASCII) archive format, use "-H odc" instead.
-C, --io-size=NUMBER 设置 I/O 块大小为指定的 NUMBER 字节
--force-local
包文件是本地的,尽管名字中含有冒号
-f, --nonmatching 仅拷贝不匹配任意给定的模式的文件
-F, --file=[[用户@]主机:]文件名
用“文件名”来替代标准输入和输出。如果是非本地的文件,则用可选的“用户”和“主机”来指定用户名和主机名
-H, --format=格式 使用指定的包格式
-M, --message=STRING 当到达备份介质的尾部的时候打印
STRING
-n, --numeric-uid-gid 在内容列表的详表中,显示数字的 UID
和 GID
--quiet 不要打印已拷贝的块数
--rsh-command=COMMAND 用 COMMAND 替代 rsh
-v, --verbose 详细列出已处理的文件
-V, --dot 每处理一个文件就打印一个“.”
-W, --warning=FLAG 控制警告信息显示。当前 FLAG
可为“none”、“truncate”或“all”。多个选项可以累积
命令修饰仅在 copy-in 模式中有效:
-b, --swap
交换数据中每个字的两个半字以及每个半字中的两个字节。等价于
-sS
-r, --rename 交互式重命名文件
-s, --swap-bytes 交换文件中每个半字中的两个字节
-S, --swap-halfwords
交换文件中每个字(4个字节)中的两个半字
--to-stdout 提取文件到标准输出
-E, --pattern-file=FILE 从 FILE
中读取额外的用于指定提取或列表的文件名的模式
--only-verify-crc When reading a CRC format archive, only verify the
checksum of each file in the archive, don't
actually extract the files
应用于 copy-out 模式的选项
-A, --append 追加到已存在的归档文件
--device-independent, --reproducible
Create device-independent (reproducible) archives
--ignore-devno Don't store device numbers
-O [[用户@]主机:]文件名
使用包文件名而不是标准输出。如果文件在远程机器上,则可指定用户和主机
--renumber-inodes Renumber inodes
应用于 copy-pass 模式的选项:
-l, --link 在可行时链接文件而不是拷贝文件
应用于 copy-in 及 copy-out 模式的选项:
--absolute-filenames 文件名不去除文件系统前缀
--no-absolute-filenames 相对于当前目录来创建所有文件
应用于 copy-out 及 copy-pass 模式的选项:
-0, --null 文件名列表采用 NULL
而不是换行作为分割符
-a, --reset-access-time 文件读取后恢复文件的访问时间
-I [[用户@]主机:]文件名
从文件读入而不是从标准输入读入
如果文件在远程机器上
则可指定用户和主机
-L, --dereference 跟随符号链接
(拷贝符号链接指向的文件而不是拷贝链接本身)
-R, --owner=[用户][:.][组]
设置所有文件的所有权信息到指定的用户和/或组
应用于 copy-in 和 copy-pass 模式的选项:
-d, --make-directories 需要时创建目录
-m, --preserve-modification-time
创建文件时保留以前文件的修改时间
--no-preserve-owner 不改变文件的所有权
--sparse
把含有大块零的文件以稀疏文件方式写出
-u, --unconditional 无条件覆盖所有文件
实例
cpio -o name-list > archive # 归档 name-list 中的文件到 archive
cpio -i < archive # 从 archive 中提取文件
cpio -p destination-directory < name-list # 拷贝 name-list 中的文件到目标目录(destination-directory)
find / -print | cpio -covB > /dev/st0 # 将系统上所有资料备份到磁带机内,/dev/st0是磁带的设备名,代表SCSI磁带机
cpio -icdvt < /dev/st0 > /tmp/st_content # 查看上例磁带机上备份的文件
find /etc -type f | cpio -ocvB >/opt/etc.cpio # 将/etc下的所有普通文件都备份到/opt/etc.cpio
cpio -icduv < /opt/etc.cpio # 备份包etc.cpio还原到相应的位置,如果有相同文件进行覆盖
: << comment
注意,cpio恢复的路径,如果cpio在打包备份的时候用的是绝对路径,那么在恢复的时候会自动恢复到这些绝对路径下,本例就会将备份文件全部还原
到/etc路径下对应的目录中。同理,如果在打包备份用的是相对路径,还原时也将恢复到相对路径下
示例可以看出,cpio无法直接读取文件,它需要每个文件或者目录的完整路径名才能识别读取,而find命令的输出刚好做到了这点,因此,cpio命令一般
和find命令配合使用
comment