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 的內容是否一模一樣!