幾天前,我在 180GB 分區中運行了 ddrescue,但 3 天後(99.91% 救援以及我上次檢查時在第 3 階段)系統凍結了,所以我按住關閉按鈕關閉了電腦。
當我開機時,我對映像檔和日誌檔案進行了備份,但是日誌檔案沒有完全複製,它說複製時出錯,但是從日誌檔案複製了106 kb中的104 kb(奇怪的事情) )。
當我再次執行 ddrescue 指令時,出現一則訊息「mapfile discoC.Logfile 中出現錯誤,第 4092 行」。
命令:
sudo ddrescue -d -r0 /dev/sdb3 discoC.img discoC.Logfile
這是我的PasteBin 上的日誌檔案不完整,第 4092 行是最後一行。這是日誌檔案的一部分:
# Mapfile. Created by GNU ddrescue version 1.23
# Command line: ddrescue -d -r0 /dev/sdb3 discoC.img discoC.Logfile
# Start time: 2021-12-15 01:56:33
# Current time: 2021-12-18 20:11:51
# Scraping failed blocks... (forwards)
# current_pos current_status current_pass
0xC5A65E00 / 1
# pos size status
0x00000000 0x00003400 -
0x00003400 0x00000200 +
0x00003600 0x00000800 -
0x00003E00 0x00000800 +
0x00004600 0x00000200 -
0x00004800 0x00000200 +
0x00004A00 0x00000400 -
....... (Lot of - and +)........
0xC564C600 0x00000400 +
0xC564CA00 0x00000600 -
0xC564D000 0x00000200 +
0xC564D200 0x00000200 -
0xC564D400 0x00000800 +
0xC564DC00 0x00000400 -
0xC564E000 0x00000600 +
0xC564E600 0x00000200 -
0xC564E800 0x00001A00 +
0xC5650200 0x00000200 -
0xC5650400 0x00000E00 +
0xC5651200 0x00000200 -
0xC
您可以幫助我,以便該過程可以從那裡繼續嗎?
答案1
根據https://www.electric-spoon.com/doc/gddrescue/html/Mapfile-struct.html映射文件(日誌文件)很容易用文字編輯器解釋和編輯。
我傾向於複製它並刪除第 4091 和 4092 行,我希望這將允許 ddrescue 從它記錄的最後一點開始。
它似乎確實失敗了很多。我確實想知道從末尾向後運行它(即添加 -R 開關)是否可以讓您更快地捕獲大量數據。 (嘗試這樣做並沒有什麼壞處)。
答案2
抱歉這麼晚才讀到這個問題。
恢復對遺失的 4092 行有效的內容會很容易:
0xC5651400 <remaining-size> ?
在哪裡:
0xC5651400
是新區塊的起始位置,將第 4091 行處的前一個區塊的開始位置0xC5651200
與該區塊的大小相加而得到0x00000200
。?
這意味著這些區塊從0xC5651400
尚未嘗試的位置開始,因此必須嘗試對其進行克隆。<remaining size>
: 見下文。
如何計算 的值<remaining size>
:
- 如果日誌檔案中有第 4093 行:第 4093 行的起始偏移量與第 4092 行提到的計算起始偏移量(即
0xC5651400
)之間的差異(以十六進位表示) - 或者,如果沒有第 4093 行:
dev/sdb3
分區大小與第 4092 行的起始偏移量之間的差異(即0xC5651400
)。
分割區的大小dev/sdb3
可以透過終端機命令來了解,例如fdisk -l
或透過啟動到不同映像檔的複製過程,並且在沒有日誌檔案的情況下使用不同的日誌檔案。 ddrescue 應顯示類似「About to copy N bytes」的訊息。您可能必須按磁區大小(例如 512)進行分割並轉換為十六進位。