当前位置:网站首页 > 技术博客 > 正文

linux提取文件时发生了错误



在讲解如何从 RPM 包中提取文件之前,先来系统学习一下 cpio 命令。

cpio 命令用于从归档包中存入和读取文件,换句话说,cpio 命令可以从归档包中提取文件(或目录),也可以将文件(或目录)复制到归档包中。

cpio 命令可以看做是备份或还原命令,因为它可以将数据(文件)备份到 cpio 归档库,也可以利用 cpio 文档库对数据进行恢复。

使用 cpio 命令备份或恢复数据,需注意以下几点:

  • 使用 cpio 备份数据时如果使用的是绝对路径,那么还原数据时会自动恢复到绝对路径下;同理,如果备份数据使用的是相对路径,那么数据会还原到相对路径下。
  • cpio 命令无法自行指定备份(或还原)的文件,需要目标文件(或目录)的完整路径才能成功读取,因此此命令常与 find 命令配合使用。
  • cpio 命令恢复数据时不会自动覆盖同名文件,也不会创建目录(直接解压到当前文件夹)。
  1. "-o" 模式:指的是 copy-out 模式,就是把数据备份到文件库中,命令格式如下: 各选项含义如下:
    • -o:copy-out模式,备份;
    • -v:显示备份过程;
    • -c:使用较新的portable format存储方式;
    • -B:设定输入/输出块为 5120Bytes,而不是模式的 512Bytes;

    比如,使用 cpio 备份数据的命令如下:
  2. "-i" 模式:指的是 copy-in 模式,就是把数据从文件库中恢复,命令格式如下: 各选项的含义为:
    • -i:copy-in 模式,还原;
    • -v:显示还原过程;
    • -c:较新的 portable format 存储方式;
    • -d:还原时自动新建目录;
    • -u:自动使用较新的文件覆盖较旧的文件;

    比如,使用 cpio 恢复之前备份的数据,命令如下:
  3. "-p" 模式:指的是复制模式,使用 -p 模式可以从某个目录读取所有文件,但并不将其备份到 cpio 库中,而是直接复制为其他文件。

    例如,使用 -p 将 /boot/ 复制到 /test/boot 目录中可以执行如下命令:

在服务器使用过程,如果系统文件被误修改或误删除,可以考虑使用 cpio 命令提取出原 RPM 包中所需的系统文件,从而修复被误操作的源文件。

RPM 包允许逐个提取包中文件,使用的命令格式如下:

该命令中,rpm2cpio 就是将 RPM 包转换为 cpio 格式的命令,通过 cpio 命令即可从 cpio 文件库中提取出指定文件。

举个例子,假设我们不小心把 /bin/ls 命令删除了,通常有以下 2 种方式修复:

  1. 将 coreutils-8.4-19.el6.i686 包(包含 ls 命令的 RPM 包)通过 -force 选项再安装一遍;
  2. 使用 cpio 命令从 coreutils-8.4-19.el6.i686 包中提取出 /bin/ls 文件,然后将其复制到相应位置;

在此基础上,我们只需从此 RPM 包使用 cpio 命令提取出 ls 命令文件,然后将其复制到对应位置即可,实现命令如下:

  1. 先使用命令显示rpm包含的文件列表
  1. 然后再显示的列表中找到你需要的文件,执行如下命令:

  • 上一篇: win11windows键
  • 下一篇: 成员变量怎么定义
  • 版权声明


    相关文章:

  • win11windows键2024-12-09 09:00:59
  • c++中fopen_s什么意思2024-12-09 09:00:59
  • java内存模型图解2024-12-09 09:00:59
  • oracle的视图有什么用2024-12-09 09:00:59
  • 电脑上好用的电子书阅读软件2024-12-09 09:00:59
  • 成员变量怎么定义2024-12-09 09:00:59
  • monkey测试工具下载2024-12-09 09:00:59
  • 23种设计模式代理模式2024-12-09 09:00:59
  • 高并发三种解决方法2024-12-09 09:00:59
  • dbn-bp2024-12-09 09:00:59