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.pswp.cn/news/279261.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279261.shtml
英文地址,請注明出處:http://en.pswp.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…