Linux常用命令学习笔记:cpio

一、命令简介

cpio是Linux系统中用于创建、还原备份档的工具程序,可以加入、解开cpio或tar备份档内的文件。该命令通过读取或写入标准输入/输出来处理数据,支持多种操作模式,包括创建归档文件、从归档文件中提取文件以及直接复制文件到另一个位置。

二、基本语法

cpio [选项] [归档文件]

三、三种操作模式

1. Copy-out模式(创建归档)

使用-o选项,将文件复制到归档包中。该模式从标准输入获得文件名列表,将归档包写到标准输出。

2. Copy-in模式(提取归档)

使用-i选项,从归档包中读取文件或列出归档包内容。该模式从标准输入读入归档包,可以指定通配符模式串来提取特定文件。

3. Copy-pass模式(直接复制)

使用-p选项,将文件从一棵目录树复制到另一棵,结合了copy-in和copy-out的操作,但不使用归档包。

四、常用选项详解

选项说明
-o创建新的归档文件(copy-out模式)
-i从归档文件中提取文件(copy-in模式)
-t列出归档文件的内容
-v显示详细的操作信息
-d自动创建必要的目录
-m保留文件的修改时间
-c使用旧ASCII备份格式
-B将输入/输出区块大小改成5210 Bytes
-f强制覆盖已存在的文件
-u强制更新所有文件,不论日期时间新旧
-0使用NULL字符作为行结束符,配合find的-print0使用
-A附加到已存在的备份档中
-F <备份档>指定备份档的名称
-H <格式>指定备份格式(如newc、crc等)

五、使用示例

1. 创建归档文件

# 将当前目录下所有文件打包到backup.cpio
find . | cpio -ov > backup.cpio

# 仅打包特定类型的文件
find . -name "*.txt" | cpio -ov > texts.cpio

# 使用指定格式创建归档
find /etc -type f | cpio -ocvB > /opt/etc.cpio

2. 提取归档文件

# 解压到当前目录
cpio -idv < backup.cpio

# 解压并保留文件修改时间
cpio -idmv < backup.cpio

# 解压到指定目录
mkdir restore && cd restore
cpio -idv < ../backup.cpio

3. 列出归档内容

# 列出归档文件中的文件列表
cpio -itv < backup.cpio

# 以数字形式显示用户和组ID
cpio -itvn < backup.cpio

4. 直接复制文件(不创建归档)

# 将source_dir目录复制到target_dir
find source_dir -print0 | cpio -0dpv target_dir

5. 向已存在归档追加文件

# 向backup.cpio追加新文件
find new_files/ | cpio -oA backup.cpio

6. 从RPM包中提取文件

# 提取RPM包中的指定文件
rpm2cpio package.rpm | cpio -idv ./path/to/file

六、注意事项

  1. 路径处理:如果打包时使用绝对路径,解压时会自动恢复到绝对路径下;使用相对路径则恢复到相对路径下。
  2. 文件覆盖:默认情况下,cpio不会自动覆盖同名文件,需要使用-u选项强制覆盖。
  3. 目录创建:解压时默认不会自动创建目录,需要使用-d选项自动创建必要目录。
  4. 文件列表:cpio需要每个文件或目录的完整路径名才能识别读取,因此常与find命令配合使用。
  5. 压缩支持:cpio可以与其他压缩工具结合使用,如gzip、bzip2等。

七、cpio与tar命令对比

特性cpiotar
支持格式cpio、tartar
文件名长度限制255字符
硬连接保留
时间戳保留默认保留需要指定选项
多卷备份支持不支持
坏块处理可跳过继续工作无法访问后续内容
压缩效率较高中等
使用复杂度较高较低
流行度较低较高

八、常见问题及解决方法

问题1:无法解压文件

原因:文件损坏、格式不支持或权限问题。 解决方法

  • 确保文件完整无损
  • 使用正确的格式选项(如-H newc
  • 检查并确保有足够的权限

问题2:提取时遇到长文件名错误

原因:旧版本cpio不支持长文件名。 解决方法

  • 使用-H newc选项指定新的压缩格式
  • 更新cpio到最新版本

问题3:提取速度慢

原因:磁盘I/O性能差或文件系统问题。 解决方法

  • 检查磁盘健康状况
  • 尝试在不同文件系统上解压
  • 使用SSD替代HDD

九、总结

cpio命令是Linux系统中功能强大的备份和归档工具,虽然语法相对复杂,但提供了比tar更灵活的文件处理能力。它支持多种归档格式、保留硬连接和时间戳、支持多卷备份,特别适合需要精确控制文件操作的高级用户。在实际使用中,建议根据具体需求选择合适的选项,并注意路径处理和文件覆盖等问题。


作 者:南烛
链 接:https://www.itnotes.top/archives/735
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇