
ddrescue 似乎嘗試恢復磁碟或分割區上的所有區塊,甚至不包含檔案的區塊。難道它不能透過查看檔案系統(例如 NTFS 上的主文件表)來找出哪些區塊實際保存檔案嗎?
編輯:看來可以與partclone結合使用:
http://partclone.org/features/
對於救援情況,Partclone 的救援模式會嘗試跳過壞區塊並備份分割區的所有好區塊。 ddrescue 程式是保存壞磁碟的另一個更好的解決方案,而在partclone 的幫助下,透過將所有使用的區塊列為網域文件,它可以使 ddrescue 在轉儲分割區時更聰明、更快。
也可以看看: http://sourceforge.net/p/partclone/mailman/partclone-user/thread/[電子郵件受保護]/
答案1
簡短的回答:因為這不是它的目的。 Ddrescue 只做了一件事(1:1 複製故障硬碟),並且做得很好。
答案2
我不相信這是可能的,因為 ddrescue 就像 dd 本身一樣,旨在在任何區塊設備上運行,即使是那些沒有檔案系統或損壞的檔案系統。查看檔案系統是否存在只會使事情變得複雜。
答案3
舊線程但可能對其他人有幫助...
如果輸入是 NTFS 格式的捲,則可以使用 ddrutility 中的 ddru_ntfsbitmap,透過 $Bitmap 系統檔案產生 ddrescue 的映射文件,該文件正是 NTFS 分割區上已使用/未使用的簇的映射。當然,它要求 $Bitmap 檔案完好無損,位於完全可讀的區域,才能正常工作(通常位於分區的開頭)。如果是這種情況,它會快速進行(在我的第一次也是迄今為止唯一的經驗中,從 1TB 分區生成映射檔案大約需要 2 分鐘)。然後使用以下基本命令執行 ddrescue:
ddrescue [options] [input path] [output path] [logfile] -m [mapfile]
在 ddrescue 的最新版本中,術語「日誌檔案」(在復原過程中保存輸入卷的已救援/未嘗試/損壞區域的檔案)已被「映射檔案」替換,這使得這非常令人困惑。因此,例如,如果您想要使用 ddru_ntfsbitmap 產生的名為 Recovery_bitmap.log 的映射檔案將名為 /dev/sdc 的 HDD 還原到 /media/sdd1 上名為 Recovery 的映像,則命令應為:
ddrescue [options] /dev/sdc /dev/sdd1/Recovery /dev/sdd1/Recovery.log -m /dev/sdd1/Recovery_bitmap.log
答案4
主要原因可能是它會使ddrescue
的程式碼變得更加複雜,因為它需要合併各種檔案系統的信息,並解析它們的內部結構。
然而,即使忽略額外的開發工作,試圖找出哪些區塊有資料通常也是很困難的。ddrescue
通常用於資料已損壞並且可能不一致的情況。在這種情況下,嘗試尋找已使用的區塊是有風險的 - 如果空閒區塊清單本身已損壞(但仍然可讀)怎麼辦?或者,檔案的當前版本可能不再可恢復,但檔案的舊版本仍然存在於空閒區塊中(因為檔案系統沒有就地覆蓋)。
在這種情況下,唯一安全的選擇就是抓住一切,然後再整理細節。