00:01
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈超老师,这节课呢,我们继续来讲啊,天包命令那各位。这里呢,我们来这个学习一条叫做RPM包中文件提取的命令,为什么要做这个事儿,我们先解释一下各位,前面我们讲了,比如说我误删除了啊,比如说把前面是不是演示过了。如果是把这个配置文件给误删除了怎么办?我说我们是不是可以通过强制覆盖安装的方法,是不是把这个文件是不是重新安装过来。但是我假设我不是误删除了,而我只是什么,我只是什么。我是不修改了,比如说我没有误删,但是我改了,哎,我这里多加几个空格,改完之后呢,我忘了原文件是什么,我改不回来了。那这种情况下,我们强制覆盖安装能不能解决这个问题,我们试试各位,那我们先我们来装一下这个事儿啊,杠H杠杠false,然后mnt下c room下拍直下阿帕奇主包对吧,装的是它,那我们试试看。
01:14
我强制覆盖安装了一遍。然后呢,我打开看看我刚刚的修改还在吗?在吗。各位,这是Linux故意的,它是什么?强制覆盖安装,它不会修改里面文件的内容。啊,他怕是什么它的覆盖安装把你现有的配置干嘛给清空了,所以他没有办法来这样修改内容,那也就是说,如果按照我刚刚的说法,我是把这个文件改错了,改了改了改了之后我改不回来了,我想恢复初始初始文件内容,那这种情况靠覆盖安装是做不到。当然有些学员说了,那还不简单,你把它删了吧,重新再覆盖,诶是这样的话是可以,但是我说可能分特殊情况,有些情况下可能就不能删,所以这个时候。
02:00
首先啊,我应该提醒你修改重要系统文件之前,你其实应该先给他做个备份出来。这样的话是不是改错了,是不是就随时都有恢复,所以只要养成这个良好习惯啊,尤其是在真实的生产服务器环境下,你修改的文件都应该做备份,备份你也不需要把它改别的位置就干嘛,就把它备份到同样的目录下,就把它备份到这,改个名字就行了,其实我们一般习惯性的是后缀名加个点back,他就不生效了,OK,这样的话你修改错了,随时随地是都还可以回来,没那么多麻烦,对吧?但是如果你真的是忘了做这个事。然后你又把它改错了,然后呢,又恢复恢复不了了,而且这个文件还不能删,这种情况下。我们就要用到。RP包的提取,它的作用就是从R篇包当中,这个包里面是不是好多个文件,对吧,我提取出来一个我需要的一个指定文件,我提一个文件或者几个文件把它提出来,从这个包中提取这个文件,诶。
03:06
这种情况就说啊,就Linux给我们准备了这样的操作,那用不用其实在对吧,我再说我们上课讲的其实都是七巧板。那一开始学的时候,其实我说我们的入门难度是比编程低的,因为你会发现这里边儿大多数的内容都是背的。理解的东西其实并不多。但是呢,Linux的后期的难度是啥?七巧板都告诉你了,怎么拼,怎么装,考验的是你怎么把这东西给灵活应用起来,对吧?所以我说这个东西有一定的应用的场景,其实单独的文件OK,那怎么提呢?我们需要利用到一个叫做CPIIO的命令。各位,这个命令本身是用来做复制和还原的,复制、备份和还原的。但是这个命令很二。备份还原极其不方便,所以我们并不推荐它用备份,用它来做备份和还原,那我这里写了一下它的格式啊,你其实都不用详细讲,你就知道就行,这个就是啥被份,记得它的选项,这个OC vcb,如果是I的就是还原。
04:18
那但是这个命令啊,吉二在哪。哎,你想想我们CP里面其实也可以看成是被还原。但是CP的格式是什么,CP原文件。对吧,目标位置它是不是就复制过去了,简单理解好理解对吧,但是各位。我们cpio命令它不支持这样手写原文件和目标目录的方式,那目标目录你如果要备份目标目录,必须用大于号追加重新项的方式把它保存保存进来,但是你发现了吗?这里面没有圆。看到了吧,哎,备份是不是应该是把原备份到指定位置,那现在有指定位置了,但是它没有原文件。
05:00
那要用原文件怎么办?二了吧,看必须用这种特殊格式泛的管道符换泛的搜索出来的原文件,然后加管道符。各位,前面我们强调过,泛的不识别管道符对吧?别较真,为啥不是别较真,原因在这这个选项。杠print选项的作用是输出,把它作为字符串输出出来。打印出来,那既然作为字符串输出,管道符就能用了,换句话说,Find的如果要用管道符,只识别这一种格式,其他格式都不行,OK,不是说泛的就识别管道符了。原因是在杠普人的选项,那我们试试杠普人在干嘛呢?看再三讲,按理说我们是不是后边应该说我搜谁,那这个不是这个就是什么彻底打印相当于LS的作用了。OK,但是呢,CPI只识别这种方法,告诉他原文件,换句话说,备份的话,这是原文件。
06:01
得用管道符的方式告诉他,然后呢,输出真实目标位置,把它保存在哪二了吧,那要还原呢,也不认识原文件是谁,它只能干嘛。用小于号的方式把它还原回来。各位,行了,这个例子我也不打算敲你们也,我建议你也别试,为啥我觉得这个东西没有意义,换句话说,我们不建议你通过cpio来做备份和还原。我们有更先进更好更完善的还原方法,备份还原CP啊,复制这种备份还原,其实我说它其实什么,它备份的文件只能源文件和目标文件都只能在本地硬盘。而我们说备份还原的基本原则是不要把鸡蛋放在一个篮子里,那你放在一块硬盘上,硬盘坏了,这肯定是不行的,对不对?所以其实我们后面也不会用这样的方式来做备份还原,我们会有更先进的东西,比如说像SNC啊这样的东西,就是异步了,就从本机备份到其他机器,用这样的方式来做。所以。
07:07
连CPU我们都用不上,更不要再提这样的玩意,这个根本就用不着,那既然这个命令用不着,为啥讲它原因?如果我们要从CPIPM当中来提取这个文件,只能使用cpim内,因为IPM是一种二进制包,它是经过编译,它里面不再是原这个源代码,你不能直接打开把它拿出来不行,它要用特殊格式,那这个格式要用到CPI面,换句话说。这条CPI命令。现在不再推荐,不推荐你用来做普通备份和还原,但是呢,推荐你干嘛?它是什么?如果你要提取片包,它就是必备的,换句话说,你只要记下面这个被这个特殊格式就行了,OK,好了。我先解释一下这个CPI是干什么,对吧,简单看一下就行了,那其次我们来学怎么来这个还原,那现在啊来这个都是在举例,在举这个CPI在干嘛,行行行不理他,那我们来看。
08:13
真正提取的命令就是这个,简单了,反而没那么复杂。判断这小命令。RP RPM to cpl,我前面讲过了,我们前面是不是讲过了DOS to unx对吧,这个东西,哎,我们今天装完软件了,对吧?软件包安装我们学完了,我们到时候可以试试这个,对我们那我们先试试这个来。我昨天是不是创建了一个这个。之前上课的时候,是不是在后面从Windows里建了一个这个文档,对吧,那我们可以看到Windows的回车符是不是跟linus的包符不一样,对吧,那这个时候呢,我们就可以干嘛,看到在mnt下创建安装一个win,这个命令叫做DOS。X。这个命令默认为装现在装上就行,它没有依赖性,它的作用是把Windows格式转成unx格式,对吧?装好之后呢,看它执行命令DOS to unix,然后呢,后面加这篇Windows的文档,好,他说了文件类型已经转成了unix格式,可以啊,那这个时候再开始杠看到。
09:18
回收符是不是就变成了Linux正常格式对吧?那有DOS to unix,也有unix to DOS对吧?讲这个linu是想说隐藏符号,哎,如果这个回车符不改过来,如果我们在Windows里写的12脚本,可能在linus里就用不着,用不了对吧?那其次还想告诉你。这个二的意思。在Linux当中就是从一种格式转成另外一个格式,那所以可以看到了这条命令的作用就是从RPM包格式把它转成CP格式,然后把你的包给写清楚。然后呢,CPI-IDV,这是提取还原吗?把它还原到当前目录下。
10:02
各位,这个事儿要注意一件事,啥事我删一下干扰项。这里面现在的文件比较多。把干扰项删掉好,现在那我说我们看一下RPM-QM讲过干嘛。查询吧,对吧,那这个时候查询阿帕奇,你会发现它的配置文件,我们前面让你看了。它的配置文件写的是绝对路径吧。配件。对吧。那如果你这里不加一个当前目录的意思,第二,它提取出来的文件就会直接放在ETC下还是C下,或者说就直接放在这个位置上。那我问你会不会覆盖我现在正在执行的配置文件?一定会吧?那我说这是不符合我们日常工作的习惯,我们要做的是把它提出来。
11:01
然后和我现有的文件比一比,是不是真的有问题,如果真有,我再把它覆盖过去,甚至说我不会把整篇文档复制过去,我只是把里面我误删除了这一段字符串通过VI的方式拷贝进去就行了。所以我们的需求不是让它提取出来的文件直接覆盖系统现有文件,我想要做的事情是先把它提取到当前目录下。嗯。然后再视情况而定,这个文件我需要怎么操作清楚了。所以小心啊。这个点代表的是当前目录。这个点绝不允许这个删除一定要就放,这也就是说我绝不允许提出了一个文件直接把系统文件干嘛覆盖,哪怕我真的要覆盖,我也需要你后来手工覆盖,这样的话风险要低,小心啊,OK。听明白吗?好,那这个时候现在。我们文件格式我们看明白了,那我们来试试来,我现在已经确认了这个文件是这个包的,对吧?那如果我不知道这个文件是哪个包,比如说我文档的例子是我不小心把LS给删了。
12:12
我不小心把L删了,那这个时候怎么办?我是不是就应该先把L删之前我是不是应该或者找其他的电脑,我查一下IPM杠,QF,看查询系统文件属于哪个包,对吧?换句话说,不论用什么条件,我都会知道这个文件是哪个包,OK,那我知道了它属于哪个包,那我现在就可以干嘛。是不是就可以加包全名提取了,那我的笔记上做的例子是提的是就是LS里面LS看属于这个叫这个包对吧?那我是不是就提的是它从里面提的是LS对吧?那我们现在要做的例子是奇阿帕奇一个意思,那么来RPM to CPM。后面直接加包全名。提的是拍这个包当中,主程序包当中的这个包。
13:01
把这个包的格式从RPM转成C,然后管道符交给CP命令,然后呢提提取命令杠,提取选项杠IV照着写就行了。杠IDV后面加点,把它骑到这个当前目录下就行了。OK哦对,后面要确定我提的是谁,提的是谁,1TC下这你的包里的这个HTTPTD下的康下的httpd com。哎,你提的是谁,你就把谁的绝对路径写在这儿就行,因为什么在这个包中的路径和你系统的路径其实是相等的。所以你其实都不用管,其实他写的是这个包装文件的路径,没关系啊,一样的,然后这个点千万别是一定记得,它的作用是提取到当前路线回撤就行了,就这简单。他说了这个文件被提出来了,总共占了6000多个数据块,对吧,那我们来看一下。
14:00
ETC有了吧,进去ETC里的HTP有了吧,进去看,再进去,其实这个目录下不止这一个文件,但是你看就齐了这一个文件,那这个文件打开。干嘛,肯定是什么空白的,是新的,没有这个刚刚加了空白行对吧,那这时候如果你需要覆盖或者干什么,你知道吗?手工操作就行。看明白了吗?各位,这个提取的逻辑还是比较混乱的。我们简单复习一下,这个逻辑比较混乱,首先我告诉了你为什么要做包期权,因为强制刚刚覆盖的时候。他是不会修改里面的数据,它只会把文件覆盖掉,对吧,那有时候我们如果需要修改里面的数据,我们就需要提取。那提取的话,我们会利用到一个叫做CPI的那个。这个命令本身是做备份和恢复还原的,那我说它的格式很别扭,不建议使用,那现在它主要的作用就是干嘛。
15:03
把RPM包中的指定文件把它提取出来,那它用到的命令很简单,RPM to c PL后面加你要提的这个文件名就行。然后呢,它的作用就是把格式转成CPI格式,接下来用它来提取,注意前面写点就行,后面就写你要提的这个文件的绝对路径。你骑的是谁,这个路径你就写谁。就行,就照系统路径抄就行,没问题,因为啥在包中的路径和你系统路径是相等的,等量的,所以你就照着系统路径抄没问题,其实他提的是包装的这个文件而已,但是路径和系统路径是同样,OK,这样做题来就会把这一个文件提取到你的当前目录下。这时候你想覆盖,想还是想这个抄袭里面的数据,就是修改里面的数据,都随你便OK。那能用到吗?特殊情况下是能用到,但是我还是说各位,这玩意儿是七小板,你要不要用你来决定,OK,我只是告诉你有这个功能,好,各位。
16:08
到此我们的手工命令安装就真的装完了,那这个时候干嘛,我们再补一下这个,我们接下来还有什么这个什么认证是吧。诶验证是不是使用的是ipm-RV后面加的是包名,对吧,然后呢是导入。数字证书对吧,那这个命令其实就是杠杠import对吧。这个后面记得加这个数字,证书的这个名字。这个比较麻烦啊,接下来我们是不是讲了一下这个什么提取。RPM包中文件对吧?这个命令的格式挺别扭的,OK,我把它粘过来好吧。好,这个命令太长了,手工打太慢了,太慢了,我就把它粘过来,哇塞,太长了,然后那我放到下面。
17:01
这样一条命令,好,行了,这就是我们讲的手工命令,各位讲全了吗?基本下全RPM,手工命令下所有的功能都讲全,除了一件事就是什么。你如何自己写一个C语言源码包,然后把它生成一个大全包这个东西,原因这东西是就说你先得写一个有功能的C语言包,这对我们来讲是做不到的事,我们是运维嘛,对吧,所以这个功能一般是开发功能是需要来决定,我们可以不用考虑它。当然如果你真的想看看那个细说linus当中就我说了,我们的配套书籍是写了点,我虽然写了个简单的哈work特,但是我写了如何把它封装成安全包,但是这个事儿我说真的用不着,所以课程当中我们就不讲了,OK,好。那这节课的内容就是这样,那我们下节课再见。
我来说两句