快捷搜索:

删除了一些系统文件或者程序文件,但是没有备份想通过rpm包重新给他加上去(说白了就是文件丢失我想通过以前的压缩包进行压缩解压还原以前的文件)

删除了一些系统文件或者程序文件,但是没有备份想通过rpm包重新给他加上去(说白了就是文件丢失我想通过以前的压缩包进行压缩解压还原以前的文件)

通俗的去理解这句话那就是我们下载了一个RAR的压缩包,然后解压放在一个文件夹中,后面我们操作解压后的文件夹,一不小心删除了其中的一个文件或者我修改的时候改错了一个文件,导致了整个程序不能使用了,这个时候我们需要重新找到丢失或者修改有误的文件,找到这个文件名后我们去rpm包里面去找他并且把他解压放到解压后的文件夹里面去,这样我们就完成了整个的rpm解压找回文件的功能,具体代码如下:
第一步我们先通过rpm -qf /etc/passwd这个命令获取这个文件属于哪个rpm包的,知道这个rpm包的名称后我们可以直接通过CD光盘的ISO文件或者自己下载的RPM去提取这个文件,记住一定要确认一下路径,怎么确认呢?那就是 rpm -qlp rpm包 |grep 文件名,这个时候他会把这个文件的相对路径显现出来(这个路径其实就是安装好了的程序把这个文件放在哪里),接下来就是直接提取这个文件出来了,提取之前我们先来确认一下我们提取的路径是不是跟上次我们查询的路径一致也就是提取出来的路径跟安装好的那个文件路径一致,如果一致我们直接提取否则我们需要自行修改提取路径,rpm2cpio rpm包 | cpio -t |grep 丢失的文件名,这样他就会显示出来他默认在rpm包里面的文件路径了,我们查看跟对比一下安装后的文件路,发现一致我们接下来就可以直接把rpm包进行提取了,代码如下:rpm2cpio rpm包|cpio -idvm 丢失文件路径,说了这么多说下面是给出的例子:

昨天不小心把/etc/mail/sendmail.mc修改坏了,又没有备份最原始的文件,于是想到重新从rpm包中提取出来。
 
首先,要确定/etc/mail/sendmail.mc属于哪个rpm包:
[root@pps tmp]# rpm -qf /etc/mail/sendmail.mc
sendmail-8.13.8-2.el5
 
然后从iso安装光碟中提取出sendmail-8.13.8-2.el5.i386.rpm(或者其它方式取得),确认一下sendmail.mc的路径:
[root@pps tmp]# rpm -qlp sendmail-8.13.8-2.el5.i386.rpm | grep sendmail.mc
warning: sendmail-8.13.8-2.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
/etc/mail/sendmail.mc
 
在提取sendmail.mc之前,有必要确认一下它的相对路径:
[root@pps tmp]# rpm2cpio sendmail-8.13.8-2.el5.i386.rpm | cpio -t | grep sendmail.mc
2570 blocks
./etc/mail/sendmail.mc
 
好,现在可以放心提取sendmail.mc了:
[root@pps tmp]# rpm2cpio sendmail-8.13.8-2.el5.i386.rpm | cpio -idv ./etc/mail/sendmail.mc
./etc/mail/sendmail.mc
2570 blocks
 
【注意】cpio参数后的文件路径"./etc/mail/sendmail.mc"必须和前面查询的相对路径一样,否则提取不成功。
 
cpio参数说明:
-t  列出的意思,和"--list"等同,注意,此时列出的是“相对路径”
-i  抽取的意思,和"--extract"等同
-d  建立目录,和"--make-directories"等同
-v  冗余信息输出,和"--verbose"等同
 
rpm参数说明:
-q  --query 查询
-l  --list 列出
-f  --file 指定文件
-p --package 指定rpm包




您可能还会对下面的文章感兴趣: