cpio三種操作模式:1、copy-out模式,用於打包備份文件,會把文件複製到歸檔包中;2、copy-in模式,用於從歸檔包文件中恢復文件,可以從標準輸入讀入歸檔包,將歸檔包中的文件讀出或列出歸檔包裡的內容;3、copy-pass模式,用於把文件從一棵目錄樹複製到另一棵。
本教學操作環境:linux7.3系統、Dell G3電腦。
在linux中,cpio是一種資料備份與復原工具,用於建立cpio檔案文件,從檔案檔案中抽取文件,或把文件從一個目錄複製到另外一個目錄。產生的檔案檔案可以是一個磁碟文件,也可以寫入磁帶等資料流媒體。 cpio不僅能夠處理二進位與ASCII頭資料格式的cpio檔案文件,也能夠讀取和寫入各種tar格式的檔案檔案。為了保持相容,如果不特別指定,cpio通常仍然會建立二進位頭資料格式的檔案檔案。
cpio類似tar指令,可以將檔案複製打包到cpio或tar格式的歸檔包檔中,也可以從歸檔包檔中複製檔。歸檔包文件可以是磁碟上的文件, 也可以是磁帶等設備文件。
從檔案文件中抽取文件時,cpio指令能夠自動辨識讀取的是哪一種檔案文件,而且也能讀取在不同的系統中所建立的具有不同位元組順序的檔案檔。
cpio有三種操作模式,如下表所示:
cpio三種操作模式 | |
---|---|
作業模式 | 模式說明 |
#copy-out模式 | #該模式用於打包備份檔案。 cpio把檔案複製到歸檔包中。 cpio要打包的檔案名稱來自標準輸入,它從標準輸入取得檔案名稱列表,一行一個。 一般透過管道將標準輸入重新導向至另一個指令的輸出。最常見的方法是使用find指令產生檔名清單,然後透過管道傳送給cpio, 這樣cpio就可以知道要備份的資料來自哪裡。需要在find後面加上-depth選項, 減少因為進入沒有存取權限的目錄而造成的麻煩。 cpio預設將歸檔包檔案寫到標準輸出,所以需要用重定向符號>或>>將歸檔包資料輸出重新導向至一個檔案中。 |
copy-in模式 | 此模式用於從歸檔包檔案中復原檔案。 cpio它從標準輸入讀入歸檔包,將歸檔包中的文件讀出或列出歸檔包中的內容。 cpio將從歸檔包中讀出的資料寫到標準輸出。 |
copy-pass模式 | cpio把檔案從一棵目錄樹複製到另一棵, 它結合了copy-in 和copy-out 的操作, 但不使用歸檔包。 cpio從標準輸入讀取欲複製的檔案名稱清單; 目標目錄以非選項的命令列參數給出。 |
cpio支援下列的歸檔包格式: binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, 和 POSIX.1 tar。
cpio的某些選項只能用在對應的操作模式上,常用的指令選項格式如下所示:
[root@initroot ~]# cpio -ovcB > [file|device] #备份 [root@initroot ~]# cpio -ivcdu < [file|device] #还原 [root@initroot ~]# cpio -ivct < [file|device] #察看
#cpio從標準輸入讀入數據,將處理過的數據輸出到標準輸出,所以cpio需要配合管道和重定向符號使用。 找出/boot目錄下的所有檔案,備份到/tmp/boot.cpio歸檔包檔案中:copy-out模式(備份)用到的選項與參數:
-o :將資料copy輸出到檔案或裝置上
-B:讓預設的Blocks可以增加至5120bytes ,預設是512bytes!這樣的好處是可以讓大檔案的儲存速度加快(請參考i-nodes 的觀念)
# copy-in模式(還原)用到的選項與參數:
-i :將資料自檔案或裝置copy出來系統當中
-d :自動建立目錄!使用cpio所備份的資料內容不見得會在同一層目錄中,因此我們必須要讓cpio在還原時可以建立新目錄,此時就得要-d選項的幫助!
-u :自動的將較新的檔案覆寫較舊的檔案!
-t :需配合-i選項,可用在"察看"以cpio 建立的檔案或裝置的內容
#通用的選項與參數:
- # #-v :讓儲存的過程中檔案名稱可以在螢幕上顯示
- -c :一種較新的portable format方式儲存
[root@initroot ~]# cd / [root@initroot /]# find boot -print boot boot/grub boot/grub/gfxblacklist.txt boot/grub/unicode.pf2 boot/grub/locale ...省略...
[root@initroot /]# find boot | cpio -ocvB > /tmp/boot.cpio [root@initroot /]# ls -lh /tmp/boot.cpio -rw-r--r-- 1 peter peter 193M Feb 10 15:59 /tmp/boot.cpio [root@initroot ~]# file /tmp/boot.cpio /tmp/boot.cpio: ASCII cpio archive (pre-SVR4 or odc)
[root@initroot ~]# cd ~ [root@initroot ~]# cpio -idvc < /tmp/boot.cpio [root@initroot ~]# ls -al /root/boot
[root@initroot ~]# find / | cpio -ocvB > /dev/st0
[root@initroot ~]# cpio -idvc < /dev/st0
[root@initroot ~]# file initrd.img-4.15.0-65-generic initrd.img-4.15.0-65-generic: ASCII cpio archive (SVR4 with no CRC) [root@initroot ~]# mkdir /tmp/initramfs [root@initroot ~]# cd /tmp/initramfs [root@initroot initramfs]# cpio -idv < /boot/initrd.img-4.15.0-65-generic . kernel kernel/x86 kernel/x86/microcode kernel/x86/microcode/AuthenticAMD.bin 56 blocks
cpio: premature end of file
Linux影片教學》
以上是linux cpio三種操作模式是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!