cpio的用法


cpio

這個命令挺有趣的,因為 cpio 可以備份任何東西,包括裝置設備文件。不過 cpio 有個大問題, 那就是 cpio 不會主動的去找文件來備份!啊!那怎辦?所以羅,一般來說, cpio 得要配合類似 find 等可以找到檔名的命令來告知 cpio 該被備份的數據在哪里。

[root@www ~]# cpio -ovcB  > [file|device]           <==備份
[root@www ~]# cpio -ivcdu < [file|device]           <==還原
[root@www ~]# cpio -ivct  < [file|device]           <==察看
備份會使用到的選項與參數:
  -o :將數據 copy 輸出到文件或裝置上 
  -B :讓默認的 Blocks 可以添加至 5120 bytes ,默認是 512 bytes ! 
     這樣的好處是可以讓大文件的儲存速度加快(請參考 i-nodes 的觀念) 
還原會使用到的選項與參數:
  -i :將數據自文件或裝置 copy 出來系統當中 
  -d :自動創建目錄!使用 cpio 所備份的數據內容不見得會在同一層目錄中,因此我們
       必須要讓 cpio 在還原時可以創建新目錄,此時就得要 -d 選項的幫助!
  -u :自動的將較新的文件覆蓋較舊的文件!
  -t :需配合 -i 選項,可用在"察看"以 cpio 創建的文件或裝置的內容 
一些可共享的選項與參數:
  -v :讓儲存的過程中文件名稱可以在螢幕上顯示 
  -c :一種較新的 portable format 方式儲存 

你應該會發現一件事情,就是上述的選項與命令中怎么會沒有指定需要備份的數據呢?還有那個大於 (>) 與小於 (<) 符號是怎么回事啊?因為 cpio 會將數據整個顯示到螢幕上,因此我們可以透過將這些螢幕的數據重新導向 (>) 一個新的文件! 至於還原呢?就是將備份文件讀進來 cpio (<) 進行處理之意!我們來進行幾個案例你就知道啥是啥了!

范例:找出 /boot 底下的所有文件,然后將他備份到 /tmp/boot.cpio 去!
[root@www ~]# find /boot -print
/boot
/boot/message
/boot/initrd-2.6.18-128.el5.img
....以下省略....
# 透過這個 find 我們可以找到 /boot 底下應該要存在的檔名!包括文件與目錄

[root@www ~]# find /boot | cpio -ocvB > /tmp/boot.cpio
[root@www ~]# ll -h /tmp/boot.cpio
-rw-r--r-- 1 root root 16M Dec 17 23:30 /tmp/boot.cpio

我們使用 find /boot 可以找出檔名,然后透過那條管線 (|, 亦即鍵盤上的 shift+\ 的組合), 就能將檔名傳給 cpio 來進行處理!最終會得到 /tmp/boot.cpio 那個文件喔!接下來讓我們來進行解壓縮看看。

范例:將剛剛的文件給他在 /root/ 目錄下解開
[root@www ~]# cpio -idvc < /tmp/boot.cpio
[root@www ~]# ll /root/boot
# 你可以自行比較一下 /root/boot 與 /boot 的內容是否一模一樣!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM