如何恢復ddrescue過程?

如何恢復ddrescue過程?

我必須恢復我的 1TB USB HD。我正在用來ddrescue完成這個任務。有什麼辦法可以讓我ddrescue在開始後繼續進行嗎?

我正在使用命令:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image

答案1

解救可以恢復,但需要日誌檔案才能執行此操作。日誌檔案將記錄 ddrescue 迄今為止所取得的進度,重新啟動 ddrescue 將讀取日誌檔案並從中斷處開始。

日誌檔是第三個參數:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log

如果您已經在沒有日誌檔案的情況下啟動了 ddrescue 運行並將其取消,則下次 ddrescue 運行時,它將從頭開始,因為它沒有已恢復內容的記錄。

筆記:解救dd_救援是不同的程序。

答案2

即使您忘記指定日誌文件,也可能有希望:

生成模式

所以您沒有閱讀本教學並在沒有日誌檔案的情況下啟動了 ddrescue。現在,兩天后,您的電腦崩潰了,您無法知道 ddrescue 成功保存了多少資料。更糟的是,你無法恢復救援;你必須從頭開始。

或者,您可能開始複製驅動器dd conv=noerror,sync,現在處於上述相同的情況。在這種情況下,請注意,您不能使用 dd 產生的副本,除非使用sync轉換參數來呼叫它。

不要絕望(還)。在某些情況下,Ddrescue 可以從輸入檔案和(部分)副本產生近似日誌文件,這幾乎與精確日誌檔案一樣好。它透過簡單地假設包含全零的扇區沒有被拯救來實現這一點。

但是,如果副本的目標是磁碟機或分割區(或現有常規檔案並且未要求截斷),則很可能您需要從頭開始重新啟動 ddrescue。 (當然,這次有一個日誌檔)。原因是驅動器中可能存在尚未被覆蓋的舊數據,因此可能未嘗試但非零。

例如,如果您第一次嘗試以下命令之一:

ddrescue infile outfile

或者

dd if=infile of=outfile conv=noerror,sync

您可以使用以下命令產生近似的日誌檔案:

ddrescue --generate-mode infile outfile logfile

答案3

正如其他人所說,您應該始終指定日誌檔案作為第三個參數,這將允許復原。既然你沒有這樣做,那麼這對你沒有幫助。如果您大致知道進程到達的點,則可以使用--input-position--output-position參數從該點開始(確保將這兩個參數設為相同的值,否則輸出將被損壞)。

答案4

https://wiki.archlinux.org/index.php/Disk_cloning似乎透過conv=noerror,sync開關,dd實際上確實添加了零在最後區塊的位置,而不是發生讀取錯誤的確切位置。這與 Miles Wolbe 在 2013 年 8 月 29 日的回答中所傳達的訊息相反。

例如,如果正確的序列是,198123283並且中間存在讀取錯誤,則它將寫入198283000,而不是198000283

因此,如果實際上存在讀取錯誤,則所提出的方法將不準確 - 將會有一些原本可讀的區域最終會被填滿零,但將被視為「已獲救」。

順便說一句,最好的做法是透過用零填充目標驅動器(或至少是可用空間,例如可以使用 WinHex 來完成)來開始此類恢復嘗試。

相關內容