linux 提取cpio_Linux提取RPM包文件(cpio命令)详解

在讲解如何从 RPM 包中提取文件之前,先来系统学习一下 cpio 命令。cpio 命令用于从归档包中存入和读取文件,换句话说,cpio 命令可以从归档包中提取文件(或目录),也可以将文件(或目录)复制到归档包中。

归档包,也可称为文件库,其实就是 cpio 或 tar 格式的文件,该文件中包含其他文件以及一些相关信息(文件名、访问权限等)。归档包既可以是磁盘中的文件,也可以是磁带或管道。cpio 命令可以看做是备份或还原命令,因为它可以将数据(文件)备份到 cpio 归档库,也可以利用 cpio 文档库对数据进行恢复。使用 cpio 命令备份或恢复数据,需注意以下几点:使用 cpio 备份数据时如果使用的是绝对路径,那么还原数据时会自动恢复到绝对路径下;同理,如果备份数据使用的是相对路径,那么数据会还原到相对路径下。

cpio 命令无法自行指定备份(或还原)的文件,需要目标文件(或目录)的完整路径才能成功读取,因此此命令常与 find 命令配合使用。

cpio 命令恢复数据时不会自动覆盖同名文件,也不会创建目录(直接解压到当前文件夹)。cpio 命令主要有以下 3 种基本模式:"-o" 模式:指的是 copy-out 模式,就是把数据备份到文件库中,命令格式如下:

[root@localhost ~]# cpio -o[vcB] > [文件丨设备]各选项含义如下:-o:copy-out模式,备份;

-v:显示备份过程;

-c:使用较新的portable format存储方式;

-B:设定输入/输出块为 5120Bytes,而不是模式的 512Bytes;

比如,使用 cpio 备份数据的命令如下:

[root@localhost ~]#find /etc -print | cpio -ocvB > /root/etc.cpio

#利用find命令指定要备份/etc/目录,使用>导出到etc.cpio文件

[root@localhost ~]# II -h etc.cpio

-rw--r--r--.1 root root 21M 6月5 12:29 etc.cpio

#etc.cpio文件生成

"-i" 模式:指的是 copy-in 模式,就是把数据从文件库中恢复,命令格式如下:

[root@localhost ~]# cpio -i[vcdu] < [文件|设备]各选项的含义为:-i:copy-in 模式,还原;

-v:显示还原过程;

-c:较新的 portable format 存储方式;

-d:还原时自动新建目录;

-u:自动使用较新的文件覆盖较旧的文件;

比如,使用 cpio 恢复之前备份的数据,命令如下:

[root@localhost ~]# cpio -idvcu < /root/etc.cpio

#还原etc的备份

#如果大家査看一下当前目录/root/,就会发现没有生成/etc/目录。这是因为备份时/etc/目录使用的是绝对路径,所以数据直接恢复到/etc/系统目录中,而没有生成在/root/etc/目录中

"-p" 模式:指的是复制模式,使用 -p 模式可以从某个目录读取所有文件,但并不将其备份到 cpio 库中,而是直接复制为其他文件。

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

[root@localhost ~]# cd /tmp/

#进入/tmp/目录

[root@localhost tmp]#rm -rf*

#删除/tmp/目录中的所有数据

[root@localhost tmp]# mkdir test

#建立备份目录

[root@localhost tmp]# find /boot/ -print | cpio -p /tmp/test

#备份/boot/目录到/tmp/test/目录中

[root@localhost tmp]# ls test/boot

#在/tmp/test/目录中备份出了/boot/目录

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

[root@localhost ~]# rpm2cpio 包全名|cpio -idv .文件绝对路径该命令中,rpm2cpio 就是将 RPM 包转换为 cpio 格式的命令,通过 cpio 命令即可从 cpio 文件库中提取出指定文件。举个例子,假设我们不小心把 /bin/ls 命令删除了,通常有以下 2 种方式修复:将 coreutils-8.4-19.el6.i686 包(包含 ls 命令的 RPM 包)通过 -force 选项再安装一遍;

使用 cpio 命令从 coreutils-8.4-19.el6.i686 包中提取出 /bin/ls 文件,然后将其复制到相应位置;这里我们选择第 2 种方式。有读者可能会问,如何知道 ls 命令隶属于那个 RPM 包呢?很简单,使用rpm -qf命令即可,如下所示:

[root@localhost ~]# rpm -qf /bin/ls

coreutils-8.4-19.el6.i686

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

[root@localhost ~]# mv /bin/ls /root/

#把/bin/ls命令移动到/root/目录下,造成误删除的假象

[root@localhost ~]# ls

-bash: ls: command not found

#这时执行ls命令,系统会报"命令没有找到"错误

[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm

|cpio -idv ./bin/ls

#提取ls命令文件到当前目录下

[root@localhost ~]# cp /root/bin/ls /bin/

#把提取出来的ls命令文件复制到/bin/目录下

[root@localhost ~]#ls

anaconda-ks.cfg bin inittab install.log install.log.syslog ls

#可以看到,ls命令又可以正常使用了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cdh中使用hue使用教程_我可以在户外使用Philips Hue灯泡吗?

cdh中使用hue使用教程Philips Hue lights are great to have in your house, and they can add a lot of convenience to your living space. However, what if you want to use these smart bulbs outdoors in porch lights or flood lights? Will Philips Hue bulbs work pr…

django (三) admin后台系统

admin后台系统 1. 安装MySQL 1,安装mysql: sudo apt install mysql-server (安装过程中输入密码并牢记) 2,安装后进入mysql: mysql -u用户名 -p密码 mysql -uroot -proot ​ 3,在Django中配置和使用mysql数据库 使用mysql数据库&#xff0c;settings中配置如下&#xff1a; DAT…

python博客访问量_史诗级干货-python爬虫之增加CSDN访问量

AI人工智能史诗级干货-python爬虫之增加CSDN访问量史诗级干货-python爬虫之增加CSDN访问量搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多算法、机器学习干货csdn&#xff1a;https://blog.csdn.net/baidu_31657889/github&#xff1a;https://github.com…

弄断过河电缆_你说的是:剪断电缆线

弄断过河电缆Earlier this week we asked you if you’d cut the cable and switched to alternate media sources to get your movie and TV fix. You responded and we’re back with a What You Said roundup. 本周早些时候&#xff0c;我们问您是否要切断电缆并切换到其他媒…

复制粘贴的句子

Today you do things people will not do,tomorrow you will do things people can not do. 你今天做别人不愿做的事&#xff0c;明天就能做别人做不到的事。转载于:https://www.cnblogs.com/wensens/p/9723998.html

路由销毁上一页_路由器原理(数据通信)

路由&#xff1a;对数据包选择路径的过程路由器(也叫网关)智能选择数据传输路由的设备&#xff0c;其端口数量较少&#xff01;功能&#xff1a;连接网络1.连接异构网络以太网、ATM网络、FDDI网络2.连接远程网络局域网、广域网隔离广播将广播隔离在局域网内路由选择网络安全地址…

您可能没有使用的最佳三星Galaxy功能

Samsung packs its flagship phones with a slew of features—some are even better than stock Android. Either way, there are a lot of things on these phones that you may not be using. Here are some of the best. 包三星旗舰手机用的特性-摆有的甚至比普通的Android…

win7更新错误0x800b0109_win7更新漏洞后产生0x0000006B蓝屏的解决方法图解

这几天不少网友在使用win7更新补丁后就蓝屏了&#xff0c;代码为0x0000006b。发生这一蓝屏问题的都是安装了2016年四月份推出的安全更新补丁&#xff0c;安装后就出现蓝屏&#xff0c;有的网友表示没问题&#xff0c;有的直接蓝了。这个蓝屏重启后依旧&#xff0c;安全模式进不…

获取构造器的信息

获取类构造器的用法与上述获取方法的用法类似&#xff0c;如&#xff1a; import java.lang.reflect.*;public class constructor1 {public constructor1() {}protected constructor1(int i, double d) { } public static void main(String args[]) { try { Class cls Class.f…

如何使用facebook_如果每个人都已经开始使用Facebook,Facebook能否继续发展?

如何使用facebookThere are only so many people on earth, and so many hours in the day. Is that starting to limit the growth of social media? 地球上只有那么多人&#xff0c;一天中有很多小时。 这是否开始限制社交媒体的增长&#xff1f; Think about how much time…

2018-10-03-Python全栈开发-day60-django序列化-part3

联合唯一 clean_字段方法只能对某个字段进行检查&#xff0c;当clean方法执行完之后&#xff0c;最后还会执行clean方法&#xff0c;在clean方法中&#xff0c;可以通过获取数据字典中的值然后进行验证 from django.shortcuts import render,HttpResponsefrom django import fo…

mysql时间字段条件查询_mysql 查询 时间作为查询条件

今天select * from 表名 where to_days(时间字段名) to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) < 1近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(时间字段名)近30天SELECT * FROM 表名 whe…

mac按文件名查找文件_如何在Mac上查找和删除大文件

mac按文件名查找文件Freeing up disk space on a full hard drive can be difficult, especially when it’s full of small files. However, there are some excellent tools for macOS that let you find the files taking up the most space and delete the ones you don’t…

Swift5.1 语言参考(十) 语法汇总

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

timestamp mysql php_PHP和Mysql的Timestamp互换

在mysql中有三种时间字段类型&#xff1a;DATETIME&#xff0c;DATE和TIMESTAMP。DATETIME以YYYY-MM-DD HH:MM:SS格式的字符串来保存数据&#xff1b;DATE则是只有年月日以YYYY-MM-DD形式的字串&#xff1b;TIMESTAMP类型和PHP中的TIMESTAMP类型名字一样&#xff0c;但是两者基…

dmg是什么文件格式_什么是DMG文件(以及我该如何使用)?

dmg是什么文件格式DMG files are containers for apps in macOS. You open them, drag the app to your Applications folder, and then eject them, saving you the hassle of the dreaded “Install Wizard” of most Windows apps. So if all they are is a folder for an a…

mysql索引三个字段查询两个字段_mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?...

情况描述&#xff1a;在MySQL的user表中&#xff0c;对a,b,c三个字段建立联合索引&#xff0c;那么查询时使用其中的2个作为查询条件&#xff0c;是否还会走索引&#xff1f;根据查询字段的位置不同来决定&#xff0c;如查询a, a,b a,b,c a,c 都可以走索引的&#…

HDU 3966 Aragorn's Story (树链剖分+线段树)

题意&#xff1a;给你一棵树&#xff0c;然后有三种操作 I L R K: 把L与R的路径上的所有点权值加上K D L R K&#xff1a;把L与R的路径上的所有点权值减去K Q X&#xff1a;查询节点编号为X的权值 思路&#xff1a;树链剖分裸题&#xff08;我还没有怎么学懂&#xff0c;但基本…

canon相机api中文_您应该在佳能相机上掌握的10种相机设置

canon相机api中文Your camera is a tool, and you should be able to use it with total confidence. You should never have to dig through the manual or play around with random buttons trying to work out how to do something on a shoot. Here are the most important…

mysql普通索引自增_mysql中联合索引中的自增列的增长策略

《深入理解MySQL》中一段介绍MyISAM存储引擎中自动增长列的示例,如下1 mysql>create table autoincre_demo2 -> (d1 smallint not nullauto_increment,3 -> d2 smallint not null,4 -> name varchar(10),5 ->index(d2,d1)6 -> )enginemyisam;7 Query OK, 0 r…