cpio是一个依赖标准输入/输出的归档工具,不直接接受文件路径参数,而是靠管道传递文件列表或归档数据;它通过copy-out(-o)、copy-in(-i)、copy-pass(-p)三种模式分别实现打包、解包和目录复制,配合find命令与-c、-v、-d、-m等选项可完成备份、还原及元数据保留等任务。

cpio 是一个依赖标准输入/输出的归档工具,不直接接受文件路径参数,而是靠管道传递文件列表或归档数据。掌握它的三种核心模式(copy-out、copy-in、copy-pass)和几个关键选项,就能完成绝大多数备份与提取任务。
打包归档:用 find 配合 -o 模式
cpio 本身不扫描目录,必须由 find 或 ls 提供待归档的文件路径列表。最常用的是递归列出所有文件:
- 基础打包:find /path/to/data -print | cpio -ocv > backup.cpio
- 推荐加 -c 使用 newc 格式,兼容性好、支持长文件名和元数据
- -v 显示每个被打包的文件,便于确认范围;-o 表示输出(即创建归档)
- 若路径含空格或换行符,改用 find /path -print0 | cpio -o --null -cv > backup.cpio
解压提取:用 -i 模式还原文件
提取时默认解到当前目录,需注意权限和路径结构。安全提取的关键是带上 -d 和 -m:
- 基本解压:cpio -idv
- -d 自动创建缺失的父目录(否则遇到深层路径会报错)
- -m 保留原始修改时间;如需覆盖已有文件,加 -u
- 若只想解出部分文件,可在命令末尾加通配模式,例如 cpio -idv '*.log'
查看归档内容:用 -t 列出清单
不实际解压,仅检查归档里有什么,适合验证备份完整性:
- 列出全部:cpio -it
- 带详细信息(权限、大小、时间):cpio -itv
- 配合 grep 筛选:cpio -it
跨目录复制:用 -p 模式跳过归档文件
当只需把一堆文件从 A 目录搬到 B 目录,且要保留权限、时间戳等属性时,-p 模式比先打包再解压更高效:
- 完整复制:find /src -print | cpio -pvd /dst
- -p 启用传递模式,-v 显示过程,-d 自动建目录
- 若目标在另一台机器上,可结合 ssh:find /src | ssh user@host "cpio -pvd /dst"
不复杂但容易忽略


















