Linux cpio 命令详解:用于从标准输入或标准输出中创建、提取和管理归档文件

Linux cpio 命令详解


一、命令简介

cpioCopy In and Out)是 Linux/UNIX 系统中一个功能强大的归档工具,用于从标准输入或标准输出中创建、提取和管理归档文件。它支持三种模式:

  • 复制文件到归档中(copy-out)

  • 从归档中提取文件(copy-in)

  • 在文件之间直接复制(copy-pass)

tar 不同,cpio 不接受文件名作为参数,而是依赖其他命令(如 findls)将文件列表通过标准输入传入,这使得它在脚本和复杂处理任务中非常灵活。


二、命令语法
cpio [选项] <模式>

其中,<模式> 有三种:

  1. -o:输出模式(创建归档)

  2. -i:输入模式(提取归档)

  3. -p:通过模式(复制文件)


三、常用选项表
选项描述
-o输出模式:将文件打包到归档中(需从 stdin 读取文件列表)
-i输入模式:从归档中提取文件(需从 stdin 读取归档内容)
-p传输模式:从一个目录复制文件到另一个目录
-v显示详细操作过程(verbose)
-d自动创建所需目录
-u解压时自动覆盖已有文件
--quiet禁用警告信息
--help显示帮助信息
--version显示版本信息
-A向归档追加内容(限于 tar 格式)
-c使用 ASCII 格式的归档(与其他 UNIX 系统兼容)
-t在输入模式下列出归档内容(不解压)
--null使用 null (\0) 分隔文件名(配合 find -print0 使用)

四、工作模式详解
1. 输出模式(-o):创建归档

将文件列表打包成 .cpio 文件:

find . -type f | cpio -ov > archive.cpio
  • 使用 find 生成文件名列表。

  • -o:输出模式。

  • -v:显示过程。

  • >:将归档写入文件。

2. 输入模式(-i):解压归档

.cpio 文件中提取文件:

cpio -iv < archive.cpio

或列出归档内容:

cpio -it < archive.cpio
3. 传输模式(-p):复制文件到目录
find . -type f | cpio -pvd /destination/path/
  • -p:复制文件。

  • -v:显示过程。

  • -d:自动创建目录。


五、使用示例
示例 1:备份目录成 .cpio 文件
cd /mydir
find . -print | cpio -ov > /tmp/mybackup.cpio
示例 2:解压 .cpio 文件到当前目录
cd /restore/dir
cpio -idv < /tmp/mybackup.cpio
示例 3:列出 .cpio 文件中的内容
cpio -itv < mybackup.cpio
示例 4:跨目录复制文件
find . -name "*.txt" | cpio -pdmv /tmp/target

六、常见归档格式

cpio 支持多种归档格式:

格式名描述
odc传统 UNIX 标准格式
newc新的 ASCII 格式,支持大文件
crcnewc 格式加校验码
bin二进制格式(不常用)
tar兼容 tar 格式
ustarPOSIX 标准 tar 格式

默认使用的是 newcodc,可以通过 --format 指定:

cpio --format=newc -ov < files.txt > backup.cpio

七、应用场景
  • 系统内核模块、initramfs 制作(initramfs 使用 cpio 格式)

  • 脚本中进行文件的归档与迁移

  • 替代 tar 进行定制归档

  • 文件备份、文件系统镜像制作

  • RPM 包解包时的中间格式(.cpio 是其中的封装层)


八、cpio 与 tar 的对比
项目cpiotar
文件列表来源标准输入命令行参数
压缩支持需手动配合内建 gzip/bzip2 支持(现代版本)
灵活性更适合管道相对固定
格式兼容性多种 UNIX 风格格式通用性更高
易用性命令较复杂使用简单

九、常见错误与解决方案
  • 问题:cpio: premature end of file

    • 原因:归档未完整读取或格式不对。

    • 解决:确保输入完整,注意压缩格式。

  • 问题:cpio: cannot create directory

    • 原因:权限不足或目录不存在。

    • 解决:加 -d 创建目录,用 sudo 提权。

  • 无法识别 .cpio.gz 等压缩文件:

    gzip -dc archive.cpio.gz | cpio -idv
    

十、总结
项目内容
命令cpio
功能文件打包、归档、提取、跨目录复制
模式-o 创建、-i 解压、-p 复制
适用场景initramfs、RPM、系统迁移等
推荐配合findgzipxz
替代命令tar(更常用)

虽然 cpio 在现代系统中使用频率不如 tar,但在某些系统级任务(如制作内核镜像、解包 RPM、嵌入式系统构建)中仍然扮演着关键角色。掌握 cpio 有助于深入理解 Linux 系统文件结构和归档机制。

这里是封面: 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值