dd_rescue的優(yōu)點
想象一下, 你的某個分區(qū)失效, 存在一些硬錯誤, 你不會想繼續(xù)寫任何數(shù)據(jù)到這塊硬盤. 這時候需要把上面數(shù)據(jù)拷貝出來. 然而, 通常情況下, 你不能訪問文件, 因為文件系統(tǒng)已經(jīng)損壞.
現(xiàn)在, 你可能會拷貝整個分區(qū)到一個文件, 或燒入到一個CD-Rom, 這樣將不再丟失任何數(shù)據(jù). 你也可以創(chuàng)建一個loop設(shè)備, 使用fsck修復(fù)損壞的分區(qū), 然后訪問上面的數(shù)據(jù).
在Un*x系統(tǒng)上使用cat或dd拷貝損壞分區(qū)將會失敗, 因為它們遇到錯誤后會終止拷貝. 而dd_rescue將嘗試從壞扇區(qū)讀出數(shù)據(jù), 然后繼續(xù)下面的扇區(qū). 輸出文件(output file)會存在有一些錯誤. 你可以通過寫入日志文件看到這些錯誤的位置.
當(dāng)遇到錯誤的時候, dd_rescue的數(shù)據(jù)丟失率是很低的. 如果你終止當(dāng)前拷貝, 你不會丟失任何數(shù)據(jù). 可在任何地方繼續(xù). 輸出文件將不斷被填充, 而不像其它Un*x工具會有截端.
如果你的分區(qū)有一個壞扇區(qū), 你可以考慮從兩邊拷貝, 這將是一個不錯的主意.
兩個塊大小是一個不錯的優(yōu)化, 更大的塊將有更好的優(yōu)化效果. 但是在硬盤發(fā)生錯誤的情況下, 你想恢復(fù)的是每個扇區(qū)上的數(shù)據(jù). 所以harbs最好設(shè)置成硬件扇區(qū)大小(通常是512字節(jié)), softbs數(shù)值會大一些, 缺省是16K.
在Debian上安裝dd_rescue
運行下面命令安裝ddrescue
#apt-get install ddrescue
在Ubuntu上安裝ddrescue
sudo apt-get install ddrescue
ddrescue的語法
dd_rescue [options] infile outfile
現(xiàn)在我們將看到如何使用ddrescue在損壞硬盤上恢復(fù)數(shù)據(jù)
如果你有一塊損壞的硬盤/dev/sda1和一塊沒有任何數(shù)據(jù)的硬盤/dev/sda2. 現(xiàn)在如果你想把數(shù)據(jù)從/dev/sda1拷貝到/dev/sda2上, 運行下面命令:
# dd_rescue /dev/sda1 /dev/sda2/backup.img
如果你使用ubuntu linux, 運行下面命令(拷貝sda1所有數(shù)據(jù)到sda2):
sudo dd_rescue /dev/sda1 /dev/sda2/backup.img
現(xiàn)在你需要檢查備份(拷貝)數(shù)據(jù)的連續(xù)性:
#fsck -y /dev/sda2/backup.img
如果你使用ubuntu linux, 運行下面命令:
sudo fsck -y /dev/sda2/backup.img
檢查完后, 從加載鏡像文件到本地的recoverydata分區(qū):
#mount /dev/sda2/backup.img /mnt/recoverydata
如果你使用ubuntu linux, 運行下面命令:
sudo mount /dev/sda2/backup.img /mnt/recoverydata
你將可以通過加載的分區(qū)(/mnt/recoverydata)訪問鏡像文件(backup.img)上的數(shù)據(jù), 然后檢查是否有任何問題.
恢復(fù)鏡像
如果你想恢復(fù)鏡像到損壞的硬盤, 運行下面命令:
#dd_rescue /dev/sda2/backup.img /dev/sda1
如果你使用ubuntu linux, 運行下面命令:
sudo dd_rescue /dev/sda2/backup.img /dev/sda1
使用SSH拷貝磁盤鏡像到遠程機器上
如果你想通過ssh拷貝磁盤鏡像到遠程機器上, 運行下面命令:
#dd_rescue /dev/sda1 - | ssh username@machineip ‘cat /datarecovery/backup.img’
如果你使用ubuntu linux, 運行下面命令:
sudo dd_rescue /dev/sda1 - | ssh username@machineip ‘cat /datarecovery/backup.img’
然后會顯示用戶口令輸入提示, 輸入指定用戶的口令, 然后dd_rescue開始拷貝, 結(jié)束后通過網(wǎng)絡(luò)拷貝到遠程機器上.
可能的錯誤
如果你在拷貝中遇到下面錯誤可忽略:
dd_rescue: (warning): output file is not seekable!
dd_rescue: (warning): Illegal seek
如果你需要壓縮磁盤鏡像文件, 運行下面命令:
#tar zcvf - /dev/sda1 | ssh username@machineip ‘cat@@>/tmp /datarecovery/backup.tar.gz’
如果你使用ubuntu linux, 運行下面命令:
sudo tar zcvf - /dev/sda1 | ssh username@machineip ‘cat@@>/tmp /datarecovery/backup.tar.gz’
更多dd_rescue的參數(shù)用法, 你可以參考dd_rescue的man page.
參考:
Recover Data From a dead hard drive using ddrescue
from site : http://blog.ligj.eol.cn/577