在Linux系统中,尤其是CentOS这类企业级操作系统中,cpio 是一个非常实用但常被忽视的归档工具。与大家更熟悉的
tar不同,
cpio采用“从标准输入读取文件列表”的方式来创建或提取归档,这使得它在脚本自动化和管道操作中具有独特优势。
一、什么是cpio?
cpio(copy in and out)是一个用于创建、提取和列出归档文件内容的命令行工具。它支持多种格式(如 binary、ASCII、CRC、newc 等),并且可以配合
find、
ls等命令灵活使用。
二、cpio的基本语法
cpio 命令有三种主要操作模式:
-o(--create):创建归档(copy-out 模式) -i(--extract):提取归档(copy-in 模式) -p(--pass-through):直接复制文件到目标目录(不创建归档)三、实战:如何使用cpio进行文件归档
假设我们要将
/etc目录下的所有配置文件打包成一个名为
etc_backup.cpio的归档文件。
步骤1:生成文件列表并创建归档
我们可以使用
find命令列出所有文件,并通过管道传递给
cpio:
$ find /etc -print | cpio -ov > etc_backup.cpio
解释:
find /etc -print:递归列出
/etc下的所有文件路径
cpio -ov:
-o表示创建归档,
-v表示显示详细过程
> etc_backup.cpio:将输出重定向到归档文件
步骤2:查看归档内容
$ cpio -it < etc_backup.cpio
-i表示读取归档,
-t表示列出内容,
<表示从文件读入。
步骤3:解压归档到指定目录
$ mkdir /tmp/restore$ cd /tmp/restore$ cpio -idmv < /path/to/etc_backup.cpio
参数说明:
-i:提取模式
-d:自动创建所需目录
-m:保留文件修改时间
-v:显示处理过程
四、cpio vs tar:有什么区别?
很多用户会问:既然有
tar,为什么还要用
cpio?其实两者各有优势:
五、常见问题与技巧
Q:cpio 能压缩吗?
cpio 本身不提供压缩功能,但可以配合 gzip、bzip2 等工具使用:
$ find . -print | cpio -o | gzip > backup.cpio.gz$ gunzip -c backup.cpio.gz | cpio -i
Q:如何排除某些文件?
可以在
find中使用
-not -name或
-prune来过滤:
$ find /etc -not -name "*.bak" -print | cpio -ov > clean_etc.cpio
六、总结
虽然
tar更为流行,但 CentOS cpio命令 在特定场景下(如系统恢复、initramfs构建)依然不可替代。掌握
cpio不仅能提升你的 Linux文件打包 技能,还能让你在处理复杂备份任务时更加得心应手。无论是日常运维还是系统级开发,cpio归档工具 都是你工具箱中值得收藏的一员。同时,它也是构建可靠 系统备份工具 链的重要组成部分。
希望这篇教程能帮助你轻松上手 cpio!如有疑问,欢迎在评论区交流。
