您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页实战8:rpm2cpio,cpio恢复文件

实战8:rpm2cpio,cpio恢复文件

来源:爱玩科技网


使用rpm2cpio,cpio提取rpm包中的特定文件

当在linux rescue模式中,修复系统时明确知道是丢了哪个文件,但是在此时强制安装丢失文件相应的rpm包时又会出现很多依赖关系提示。

或者可换种思路,我们只需要这个丢掉的文件而已,可以找到丢失文件的相关rpm包,然后用cpio及rpm2cpio组合,把文件提取出来,然后再复制到丢失文件的相应位置,此问题亦可解决。

模拟/etc/inittab文件被删除,通过rpm2cpio,cpio恢复文件。

先查看/etc/inittab文件由哪个包安装的

[root@localhost ~]# rpm -qf /etc/inittab

initscripts-9.49.30-1.el7.x86_

1. 将/etc下的所有普通文件都归档到/opt/etc.cpio.

# find /etc/ –type f | cpio –ocvB > /opt/etc.cpio

2. 创建一个备份文档并删除inittab(重命名)

# mv /etc/inittab{,.bak}

3. 通过挂载点读取光盘中的二进制包到当前目录

# rpm2cpio /media/Packages/initscripts-9.49.30-1.el7.x86_.rpm | cpio -idv /root/etc/inittab

4. 复制恢复被删除的文件

# cp etc/inittab /etc/inittab

cpio:是通过重定向的方式将文件进行打包备份,还原恢复的工具, 它可以解压以“.cpio”或者“.tar”结尾的文件。

-o :将数据copy到文件或设备上

-i :将数据从文件或设备上还原到系统中

-t :查看cpio建立的文件或设备内容

-c :一种比较新的portableformat方式存储

-v :在屏幕上显示备份过程中的文件名

-B :让预设的blocks可以增加到5120bytes,默认是512bytes,这样可以使备份速度加快

-d :自动建立目录,这样还原时才不会出现找不到路径的问题

-u :更新,用较新的文件覆盖旧的文件

注意:

1)cpio恢复的路径,如果cpio在打包备份的时候用的是绝对路径,那么在恢复的时候会自动恢复到这些绝对路径下,

同理,如果在打包备份用的是相对路径,还原时也将恢复到相对路径下。

2)cpio无法直接读取文件,它需要每个文件或者目录的完整路径名才能识别读取,而find命令的输出刚好做到了这点,

因此,cpio命令一般和find命令配合使用。

3)cpio恢复的时候不会自动覆盖同名文件。

4)不会创建目录而是直接解压到当前文件夹。

备份:cpio -covB > [file|device] 将数据备份到文件或设备上

还原:cpio -icduv < [file|device} 将数据还原到系统中

需要RPM包中的某个文件,如何解压RPM包呢?

RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压:

rpm2cpio命令用于将rpm软件包转换为cpio格式的文件。

格式:rpm2cpio xxx.rpm | cpio -div

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务