hddrescue

故障外接硬碟救援紀錄

筆者於2018年在美國Walmart買了一顆WD的My Passport 1TB外接硬碟,2021年開始就出現在Windows無法打開,在Macbook上有時候讀得到,有時候讀不到(在Disk Utility看得到,但沒有掛載在桌面),一直拖到2026才來救援。

用Refus加上SystemRescue製作開機隨身碟

先用Refus加上SystemRescue製作開機隨身碟。下載Rufus,下載SystemRescue的映像檔。

按照這個頁面的指示,將SystemRescue的印像檔燒錄到隨身碟上。

燒錄的時候可能會出現the selected cluster size is not valid for this device的錯誤訊息,在Cluster size要選擇正確的size。

用隨身碟開機的時候,要設定secure boot。重開機後按F2進入BIOS,在security選單中,

分段救援

因為筆者的電腦只有512GB,但這個外接硬碟有1TB,所以原本是打算分段救援,就是一次救援200GB,然後分5次複製到電腦的硬碟中。但這個方法後來遇到了一些問題,所以沒採用,但還是記錄一下過程。(下面是以救援10GB當作示範)

用開機隨身碟進入SystemRescue後,先輸入startx,進到圖形化介面,再進到terminal,輸入lsblk -f,可以看到目前有的硬碟磁區。筆者是想要把損壞的外接硬碟檔案複製到電腦中,這個電腦的磁區的FSTYPE通常會是BitLock 2,但電腦本身有被密碼保護,所以沒辦法直接掛載。

先回到Windows,用系統管理員打開命令提示字元。輸入manage-bde -protectors -get C:畫面顯示no key protectors found,接著輸入manage-bde -protectors -add C: -RecoveryPassword,會產生一組金鑰,把金鑰抄下來。

再次到SystemRescue,輸入mkdir -p /mnt/bitlocker /mnt/computer,創建兩個新資料夾。

輸入lsblk -f,確認電腦要存放備份檔的磁區名稱,假設是nvme0n1p3,接著輸入dislocker -V /dev/nvme0n1p3 -p -- /mnt/bitlocker會要求輸入金鑰。

接著輸入mount -o loop /mnt/bitlocker/dislocker-file /mnt/computer成功掛載。

此時可以到File System中的mnt資料夾中的computer查看檔案,可以看到Windows中一般常見的Program Files資料夾。

接著插入損壞的外接硬碟,一樣輸入lsblk -f,確認損壞的外接硬碟磁區名稱,假設為為sdb1。

開始用ddrescue救援,輸入ddrescue -d -v -n -i 0GiB -s 10GiB /dev/sdb1 /mnt/computer/part1.img /mnt/computer/part1.map

備份完成後,回到Windows,下載OSFMount掛載剛剛備份出來的img檔案。

接著就可以用PhotoRec掃描掛載part1.img的磁碟,並把裡面的檔案救出來。(救回來的檔案不會顯示原本的檔名,只會是編碼)

網路上也有人推薦用Recuva,這個軟體救回來的檔案雖然能夠顯示原本的檔名,但能救的檔案不多。

第一批檔案救回來後,移到安全的地方,再騰出空間給第二批,此時第二批救援指令要用ddrescue -d -v -n -i 10GiB -s 10GiB -o 0 /dev/sdb1 /mnt/computer/part2.img /mnt/computer/part2.map,不加-o 0的話,檔案大小會變成20GB。

筆者用這個方法,後來掛載電腦硬碟的時候,出現fsconfig() failed can't find a squashfs superblock on loop1的錯誤訊息,沒有解決。

一次救援

上面分次救援到硬碟的方法行不通後,筆者另外買了一顆ADATA的2TB SSD(SE880)外接硬碟

用這個方法前要先確認USB插孔數量夠不夠,例如筆者的筆電有兩個USB Type A,一個Type C,所以一個Type A插開機隨身碟,一個Type A插舊的外接硬碟,一個Type C插新的救援外接硬碟。

用開機隨身碟進入SystemRescue後,輸入lsblk -f,看看目前的磁碟。

插入舊的待救援硬碟,再輸入lsblk -f,可以看到這個硬碟的代號,假設是sdb。

插入新的救援硬碟,再輸入lsblk -f,可以看到這個硬碟的代號,假設是sdc。

輸入ddrescue -f -r 3 -n -v /dev/sdb /dev/sdc rescue.log,開始救援。

救援完成後會第二次第三次嘗試讀取壞軌,這時候按Ctrl+C就可以退出。

這個方法只是將舊硬碟完整地複製到新硬碟上,打開新硬碟的時候一樣會出現錯誤訊息(但物理上沒有壞),所以要用PhotoRec把這個新硬碟的裡的檔案救出來。

如果空間不夠,可以分檔案類型救回,例如先救回文件檔、再救回圖檔、再救回音樂檔、再救回影片檔。

No comments:

Post a Comment