第九天 1-8 实战 : 从光盘中提取二进制包并恢复丢失的文件

简介:使用cpio和rpm2cpio命令,提取rpm安装包中,丢失的文件。前提是我们必须明确的知道丢失的文件及其安装路径

背景:当在linux中,修复系统时明确知道是丢了哪个文件,但是在此时强制安装丢失文件相应的rpm包时又会出现很多依赖关系提示。
我们只需要这个丢掉的文件而已,可以找到丢失文件的相关rpm包,然后用cpio及rpm2cpio组合,把文件提取出来,然后再复制到丢失文件的相应位置

功能介绍:cpio命令
In  copy-out  mode, 
cpio  copies files into an archive.  It reads a list of filenames, one per line, on the standard input,
and  writes the archive onto the standard output.  
A typical way to generate the list of filenames is with the find command; 
you should give find the -depth  option  to minimize problems with permissions on directories that are unreadable.
我们将要使用的命令为:cpio -idv [filepath]
-i  #指运行在copy-in mode
-d #指在当需要的时候,创建目录
-v #指列出进度

rpm2cpio命令  格式:rpm2cpio [filename]
rpm2cpio converts the .rpm file specified as a single argument to  a cpio  archive  on  standard  out. 
If a ‘-‘ argument is given, an rpm  stream is read from standard in.
例如:
rpm2cpio rpm-1.1-1.i386.rpm
rpm2cpio - < glint-1.0-1.i386.rpm
rpm2cpio glint-1.0-1.i386.rpm | cpio -dium

实验:

[[email protected] ~]# which httpd
/usr/sbin/httpd
[[email protected] ~]# rpm -qf `which httpd`
httpd-2.4.6-40.el7.x86_64
[[email protected] ~]# rm /etc/httpd/conf/httpd.conf -rf
[[email protected] ~]# ls /etc/httpd/conf/*
/etc/httpd/conf/magic
[[email protected] ~]# ls -a /etc/httpd/conf/*
/etc/httpd/conf/magic
[[email protected] ~]# ls -l /etc/httpd/conf/*
-rw-r--r-- 1 root root 13077 9月  17 2015 /etc/httpd/conf/magic
[[email protected] ~]# rm -rf etc
[[email protected] ~]# ls
a                Documents                  httpd.conf            nginx-1.11.2.tar.gz  run        usr
anaconda-ks.cfg  Downloads                  initial-setup-ks.cfg  Pictures            Templates  var
Desktop          extundelete-0.2.4.tar.bz2  Music                Public              test      Videos
[[email protected] ~]# rpm2cpio /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm | cpio -idv ./etc/httpd/conf/httpd.conf
./etc/httpd/conf/httpd.conf
7701 blocks
[[email protected] ~]# ls etc/httpd/conf/httpd.conf
etc/httpd/conf/httpd.conf
[[email protected] ~]# cp etc/httpd/conf/httpd.conf /etc/httpd/conf/.
[[email protected] ~]# rpm -e httpd

这是试验中碰到的问题,在缺少文件的情况下,还是卸载成功了,但会提示警告信息
[[email protected] ~]# which httpd
/usr/sbin/httpd
[[email protected] ~]# rpm -qf `which httpd`
httpd-2.4.6-40.el7.centos.4.x86_64
[[email protected] ~]# ls /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf
[[email protected] ~]# ls
a                Downloads                  nginx-1.11.2.tar.gz  test
anaconda-ks.cfg  extundelete-0.2.4.tar.bz2  Pictures            Videos
Desktop          initial-setup-ks.cfg      Public
Documents        Music                      Templates
[[email protected] ~]# cp /etc/httpd/conf/httpd.conf .
[[email protected] ~]# rm /etc/httpd/conf/httpd.conf -rf
[[email protected] ~]# ls /etc/httpd/conf/httpd.conf
ls: cannot access /etc/httpd/conf/httpd.conf: No such file or directory
[[email protected] ~]# rpm -e httpd
warning: file /etc/httpd/conf/httpd.conf: remove failed: No such file or directory
[[email protected] ~]# which httpd
/usr/bin/which: no httpd in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[[email protected] ~]# rpm -ivh /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm 

warning: /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
        httpd-tools = 2.4.6-40.el7 is needed by httpd-2.4.6-40.el7.x86_64
[[email protected] ~]# rpm -ivh /mnt/Packages/httpd-tools-2.4.6-40.el7.x86_64.rpm warning: /mnt/Packages/httpd-tools-2.4.6-40.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                          ################################# [100%]
        package httpd-tools-2.4.6-40.el7.centos.4.x86_64 (which is newer than httpd-tools-2.4.6-40.el7.x86_64) is already installed
        file /usr/bin/ab from install of httpd-tools-2.4.6-40.el7.x86_64 conflicts with file from package httpd-tools-2.4.6-40.el7.centos.4.x86_64
        file /usr/bin/htdbm from install of httpd-tools-2.4.6-40.el7.x86_64 conflicts with file from package httpd-tools-2.4.6-40.el7.centos.4.x86_64
        file /usr/bin/htdigest from install of httpd-tools-2.4.6-40.el7.x86_64 conflicts with file from package httpd-tools-2.4.6-40.el7.centos.4.x86_64
        file /usr/bin/htpasswd from install of httpd-tools-2.4.6-40.el7.x86_64 conflicts with file from package httpd-tools-2.4.6-40.el7.centos.4.x86_64
        file /usr/bin/httxt2dbm from install of httpd-tools-2.4.6-40.el7.x86_64 conflicts with file from package httpd-tools-2.4.6-40.el7.centos.4.x86_64
        file /usr/bin/logresolve from install of httpd-tools-2.4.6-40.el7.x86_64 conflicts with file from package httpd-tools-2.4.6-40.el7.centos.4.x86_64
[[email protected] ~]# rpm2cpio /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm |cpio -idv ./etc/httpd/conf/httpd.conf
./etc/httpd/conf/httpd.conf
7701 blocks
[[email protected] ~]# ls
a                Documents  extundelete-0.2.4.tar.bz2  Music                Public     Videos
anaconda-ks.cfg  Downloads  httpd.conf                 nginx-1.11.2.tar.gz  Templates
Desktop          etc        initial-setup-ks.cfg       Pictures             test
[[email protected] ~]# cp etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf
cp: cannot create regular file ‘/etc/httpd/conf/httpd.conf’: No such file or directory
[[email protected] ~]# ld /etc/httpd
ld: cannot find /etc/httpd: No such file or directory
[[email protected] ~]# rpm2cpio /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm | cpio -duim
7701 blocks
[[email protected] ~]# ls /etc/httpd
ls: cannot access /etc/httpd: No such file or directory
[[email protected] ~]# ll
total 1032
-rw-r--r--  1 root root      0 8月   7 10:10 a
-rw-------. 1 root root   1798 7月  27 21:54 anaconda-ks.cfg
drwxr-xr-x. 2 root root      6 7月  27 22:11 Desktop
drwxr-xr-x. 2 root root      6 7月  27 22:11 Documents
drwxr-xr-x. 2 root root      6 7月  27 22:11 Downloads
drwxr-xr-x  5 root root     52 8月   7 14:58 etc
-rw-r--r--  1 root root 108472 8月   3 23:01 extundelete-0.2.4.tar.bz2
-rw-r--r--  1 root root  11753 8月   7 14:50 httpd.conf
-rw-------. 1 root root   1891 7月  27 22:04 initial-setup-ks.cfg
drwxr-xr-x. 2 root root      6 7月  27 22:11 Music
-rw-r--r--  1 root root 924979 8月   6 23:09 nginx-1.11.2.tar.gz
drwxr-xr-x. 2 root root      6 7月  27 22:11 Pictures
drwxr-xr-x. 2 root root      6 7月  27 22:11 Public
drwxr-xr-x  3 root root     18 8月   7 14:58 run
drwxr-xr-x. 2 root root      6 7月  27 22:11 Templates
drwxr-xr-x  3 root root     26 8月   7 10:10 test
drwxr-xr-x  7 root root     65 8月   7 14:58 usr
drwxr-xr-x  6 root root     48 8月   7 14:58 var
drwxr-xr-x. 2 root root      6 7月  27 22:11 Videos
[[email protected] ~]# cd etc/
[[email protected] etc]# ls
httpd  logrotate.d  sysconfig
[[email protected] etc]# which tree
/usr/bin/tree
[[email protected] etc]# cd ..
[[email protected] ~]# tree etc
etc
|-- httpd
|   |-- conf
|   |   |-- httpd.conf
|   |   `-- magic
|   |-- conf.d
|   |   |-- autoindex.conf
|   |   |-- README
|   |   |-- userdir.conf
|   |   `-- welcome.conf
|   |-- conf.modules.d
|   |   |-- 00-base.conf
|   |   |-- 00-dav.conf
|   |   |-- 00-lua.conf
|   |   |-- 00-mpm.conf
|   |   |-- 00-proxy.conf
|   |   |-- 00-systemd.conf
|   |   `-- 01-cgi.conf
|   |-- logs -> ../../var/log/httpd
|   |-- modules -> ../../usr/lib64/httpd/modules
|   `-- run -> /run/httpd
|-- logrotate.d
|   `-- httpd
`-- sysconfig
    |-- htcacheclean
    `-- httpd

8 directories, 17 files
[[email protected] ~]# mv etc/* /etc
mv: overwrite ‘/etc/logrotate.d’? y^Hn^C
[[email protected] ~]# clear
[[email protected] ~]# ls etc
logrotate.d  sysconfig
[[email protected] ~]# which httpd
/usr/bin/which: no httpd in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[[email protected] ~]# rpm -e httpd
error: package httpd is not installed
[[email protected] ~]# rpm -ivh /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm
warning: /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
        httpd-tools = 2.4.6-40.el7 is needed by httpd-2.4.6-40.el7.x86_64
[[email protected] ~]# rpm -ivh /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm --nodeps
warning: /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:httpd-2.4.6-40.el7               ################################# [100%]
[[email protected] ~]# which httpd
/usr/sbin/httpd
[[email protected] ~]# ls /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf
[[email protected] ~]# rpm -e httpd
[[email protected] ~]# 

时间: 2024-09-29 13:38:31

第九天 1-8 实战 : 从光盘中提取二进制包并恢复丢失的文件的相关文章

python 中 模块,包, 与常用模块

一 模块 模块:就是一组功能的集合体, 我们的程序可以直接导入模块来复用模块里的功能 导入方式 一般为 : import 模块名 在python中, 模块一般分为四个通用类别 1使用python编写.py 文件 2.已被编译为共享库或DLL 的c 或c++扩展 3把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包) 4.使用c编写并链接到python解释器的内置模块 使用模块的优点: 1.从文件级别组织程序, 更方便管理 2.拿来主义, 提升开发效率

实战:mysql检查物理磁盘中的二进制日志文件是否有丢失

场景:有时候因为磁盘损坏或人为原因错误删除了磁盘中的二进制文件,导致mysql中的show binary logs记录和实际的物理磁盘中的二进制文件不匹配 #binlogdiff.sh #!/bin/sh #[email protected] #作用:mysql中show binary logs记录的二进制日志文件和实际的物理文件比较,检查 #磁盘中对应的二进制日志文件是否有丢失 source /usr/local/mysql/scripts/mysql_env.ini binlog_init=

4、CRM2011编程实战——将窗体中指定控件的值做处理后更新到另一个字段中

需求:将接报时间加上到期提醒时间后得到的值,更新到字段"到期截止时间" Js调用: //设置到期截止时间 function setDeadLine(){ var recordId = Xrm.Page.data.entity.getId(); var entityName = Xrm.Page.data.entity.getEntityName(); var reportedTime = Xrm.Page.getControl("hxcs_fdatetimeofrequest

5、CRM2011编程实战——在CRM中添加修改密码功能

需求:登录CRM2011的用户,让其可以自己修改密码. 解决方案:新建一个自定义页面,为其提供修改域账号功能.第一步:获取当前域账号,第二步:修改当前域账号密码. 新建aspx页面ResetUserPassword.aspx,前台代码如下: <%@Page Language="C#" AutoEventWireup="true" CodeBehind="ResetUserPassword.aspx.cs" Inherits="Hu

光盘中自带的linux驱动是基于内核2.6的,ubuntu14的内核是3.13,根据光盘中默认的驱动

光盘中自带的linux驱动是基于内核2.6的,ubuntu14的内核是3.13,根据光盘中默认的驱动,得知nw336 model是RTL8188CUS,官方下载地址:http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=3&PNid=21&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false,当前unix最新版为4.0.2,支持2.6.18以后

硬盘显示使用驱动器中的光盘之前需要格式化,要怎样恢复文件

使用驱动器中的光盘之前需要格式化说明这个盘的文件系统结构损坏了.在平时如果数据不重要,那么可以直接格式化就能用了.但是有的时候里面的数据很重要,那么就必须先恢复出数据再格式化.具体恢复方法可以看正文了解(不格式化的恢复方法) 工具/软件:星空数据恢复软件 步骤1:先百度搜索并下载软件运行后,直接双击需要恢复的分区,然后解压再右击软件图标选择<以管理员身份运行>软件(如果是xp系统可以直接双击打开软件)步骤2:软件运行后,直接双击需要恢复数据的盘步骤3:软件会很快将扫描到的资料,放到与要恢复盘卷

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

MVC中的Views下面的视图放到Views文件夹外

实战:把ASP.NET MVC中的Views下面的视图放到Views文件夹外 园子里写的文章的都是把控制器从传统的项目中的Controllers拿出来单独放,但很少几乎没有把视图从Views拿出去这样的文章,今天来写一个. 今天学习MVC的时候,试着实现了一下,其实很简单!一步步解决问题就行了,下面记录如下,供需要的同学参考,写的不好,轻喷,谢啦 首先咱们自己建一个MyCustomView文件夹 下面建一个Home文件夹里面放Index.cshtml视图 删除原来Views/Home/Index

Cocos2d-x中使用音频CocosDenshion引擎介绍与音频文件的预处理

Cocos2d-x提供了一个音频CocosDenshion引擎,CocosDenshion引擎能够独立于Cocos2d-x单独使用,CocosDenshion引擎本质上封装了OpenAL音频处理库.详细使用的API是SimpleAudioEngine.SimpleAudioEngine有几个经常使用的函数:void preloadBackgroundMusic (const char *pszFilePath) 预处理背景音乐文件,将压缩格式的文件进行解压处理,如MP3解压为WAV.void p