Gddrescue 要求提供地圖檔案但拒絕建立地圖文件

Gddrescue 要求提供地圖檔案但拒絕建立地圖文件

我在用著範例 3 來自 gddrescue 的文檔(此處)對磁碟進行零寫入並強制重新分配其上掛起的壞磁區。

同一文件在其他地方指出:

如果mapfile不存在,ddrescue將建立它。

但是當我幾乎逐字運行範例 3 時:

ddrescue -vvvv --fill-mode=- -f --synchronous /dev/zero /dev/sdc mapfile.txt

……我收到錯誤:

ddrescue:地圖檔案「mapfile.txt」不存在或不可讀。

如果我運行:

ddrescue -vvvv --fill-mode=- -f --synchronous /dev/zero /dev/sdc -m /cygdrive/b/users/user/desktop/mapfile.txt

....我收到相同錯誤的截斷版本:

ddrescue: Mapfile '/cygdrive/b/users/user/desktop/mapfile.txt' 不存在或不存在

我透過 Cygwin 在 Windows 7 上使用gddrescue

這是 Cygwin 實現的錯誤dd,還是我遺漏了什麼?

答案1

不是錯誤。我的 Kubuntu 上也是這樣。我認為這是因為--fill-mode你使用的選項。該模式有文件的獨立章節。您缺少的是這部分[強調我的]:

ddrescue使用--fill-mode選項呼叫時,它在“填充模式”下運行,即不同的從預設的“救援模式”。也就是說,如果您使用該--fill-mode選項,ddrescue則不會挽救任何內容。它只填充從具有狀態字元infile的區塊中讀取的數據outfilemapfile與指定為選項參數的類型字元之一一致--fill-mode

這意味著--fill-mode需要一個已經存在的mapfile.


這裡的狀態字元和類型字元是什麼?

短語“狀態字元來自mapfile”應根據這個片段:

狀態字元是以下字元之一:

字符含義
'?'未嘗試的塊
'*' 失敗的塊 未修剪的
'/' 失敗的塊 未刮擦的
'-' 失敗的塊 壞扇區
'+' 完成的塊

這是一個範例地圖檔:

# Mapfile. Created by GNU ddrescue version 1.23
# Command line: ddrescue -d -c18 /dev/fd0 fdimage mapfile
# Start time:   2015-07-21 09:37:44
# Current time: 2015-07-21 09:38:19
# Copying non-tried blocks... Pass 1 (forwards)
# current_pos  current_status  current_pass
0x00120000     ?               1
#      pos        size  status
0x00000000  0x00117000  +
0x00117000  0x00000200  -
0x00117200  0x00001000  /
0x00118200  0x00007E00  *
0x00120000  0x00048000  ?

現在,「指定為--fill-mode選項參數的類型字元」是緊接在 之後出現的字元--fill-mode=

所以如果mapfile就像上面的例子並且你使用

  • --fill-mode=-,則ddrescue只會填滿0x00000200從該位置開始的區塊0x00117000
  • --fill-mode=?-*(小心 shell 通配符,雖然不太可能,但仍然如此),然後ddrescue將填充標有?,-或 的片段*

相關內容