轉自:http://www.51testing.com/html/32/498132-816949.html
功能說明:備份文件。
補充說明:cpio是用來建立,還原備份檔的工具程序,它可以加入,解開cpio,img或tra備份檔內的文件。
cpio文件的類型判斷:
[root@localhost test]# file test.cpio
test.cpio: ASCII cpio archive (SVR4 with no CRC)
cpio實例講解
1、常用操作模式
(1)備份:cpio -ocvB > [ file | device ]
(2)還原:cpio -ivcdu >[ file | device ]
(3)查看:cpio -ivct >[ file | device ]
2、相關例子
1)cpio-out模式
(1)找出當前目錄下的所有文件,然后將它們打包進一個cpio壓縮包文件
find . -depth | cpio -ocvB > backup.cpio 或 find .-depth-print | cpio -ocvB > backup.cpio
注意:cpio 建立起來的歸檔文件包括文件頭和文件數據兩部分。文件頭包含了對應文件的信息。如文件的 UID,GID,連接數以及文件大小等。其好處是可以保留硬連接,在恢復時默認情況下保留時間戳,無文件名稱長度的限制
(2)將當前目錄下名為inittab文件加入initrd.cpio包中
命令1:find . -name inittab -depth | cpio -ovcB -A -F initrd.cpio
命令2:find . -name inittab -depth | cpio -ovcB -A -O initrd.cpio
命令3:find . -name inittab -depth | cpio -ovcB -A --quiet -O initrd.cpio(--quit:表示不顯示復制塊)
cpio --absolute-filenames -vtc < boot.cpio(不忽略文件列表清單的文件名最前面的“/")
cpio --no-absolute-filenames -vtc < boot.cpio(默認是忽略文件列表清單的文件中最前面的
(2)從cpio壓縮包中的解壓出文件
cpio --absolute-filenames -icvu < test.cpio(解壓到原始位置,解壓出來的每個文件的時間屬性改為當前時間)
cpio --absolute-filenames -icvum < test.cpio(解壓到原始位置,同時不改變解壓出來的每個文件的時間屬性)
cpio -icvu < test.cpio(解壓到當前目錄下)或者cpio -icvum < test.cpio
(3)在解包cpio時,對解包出來的文件進行交互的更名
cpio -icvdu -r < grub.cpio
(4)將cpio包中的文件解壓並輸入標准輸出
cpio -icvu --to-stdout < grub.cpio
注意:既然解壓到標准輸出,所以就不能使用-d參數了
3)cpio-out模式
(1)復制文件並更改文件的屬主與屬組
find . -depth| cpio -R ruanxi:ruanxi -pL /backup/
4)分析系統目錄/boot下的initrd-2.6.30.9.img文件
[root@Server tmp]# file /boot/initrd-2.6.30.9.img
/boot/initrd-2.6.30.9.img: gzip compressed data, from Unix, last modified: Fri Nov 13 22:12:38 2009, max compression
#由上面可知道,initrd-2.6.30.9.img它是一個gzip文件
-------------------------------------------------------------------
[root@Server tmp]# cp /boot/initrd-2.6.30.9.img ./initrd.img.gz
[root@Server tmp]# gzip -d initrd.img.gz
#通過gzip指令解壓出文件
-------------------------------------------------------------------
[root@Server tmp]# file initrd.img
initrd.img: ASCII cpio archive (SVR4 with no CRC)
#可知解壓出的文件是一個cpio壓縮包
[root@Server tmp]# cpio -ivcdu < initrd.img
#最后再使用cpio指令解包