Linux
複製 NTFS 磁碟
我需要使用 Debian GNU/Linux 複製一個失敗的 2TB 磁碟,該磁碟包含一個 NTFS 分區。磁碟有許多不可重定位的壞扇區,所以我知道部分數據已經失去;但是我需要複製磁碟才能嘗試使用
testdisk
.我發出複製它的命令是:
dd if=/dev/sdc of=/dev/md2 bs=512 conv=noerror status=progress
大約花了 2 天時間完成,在此期間它發現了大約 3GB、66GB 和 88GB 的壞扇區。故障磁碟很舊而且不是高級格式,所以我知道它的扇區肯定是 512 字節。
問題是嘗試
testdisk /dev/sdc
讀取目錄(但由於壞扇區而無法恢復文件),而 tryngtestdisk /dev/md2
甚至沒有列出目錄內容。該磁碟僅包含 NTFS 分區,它跨越了整個可用空間。為什麼複製與原始不一樣,至少在未損壞的扇區上?我是否以一種不好的方式複製,我應該以其他方式複製它,例如不同的命令或選項?
感謝Michael Hampton的建議,我發現
myrescue
,類似於dd_rescue
,但有更好的文件記錄(至少這是我的印象)。我首先複製了磁碟以
myrescue
相反的順序讀取它(從最後一個扇區到第一個扇區),然後以正常順序再次讀取失去的扇區。全部完成禁用每個預讀和記憶體。我一嚐試就發現它需要 50 多天才能完成,所以我寫了一個腳本myrescue
,在很長一段時間內可能出現電源線停電後,自動從上次中斷的地方重新啟動。它恢復了我需要的一切,但請注意:YMMV 和故障磁碟對您的數據來說不是開玩笑,因此請閱讀
myrescue
文件並在對磁碟執行任何操作之前三思而後行,包括執行我的腳本。如果您碰巧沒有其他選擇(或沒有其他更好的選擇),只能執行 myrescue,這是我編寫的腳本,以防萬一有人感興趣:
#!/bin/bash SOURCE=/dev/disk/by-id/ata-ST2000DM001-1ER164_Z4Z4Z3EQ DESTINATION=/dev/disk/by-id/ata-ST2000DM008-2FR102_WFL1GF5H if [ "$1" == "bgrun" ] ; then hdparm -a 0 "$SOURCE" # read-ahead del kernel a zero hdparm -A0 "$SOURCE" # read-ahead del disco disabilitato myrescue -b 512 -B /root/myrescue.bitmap -R -f 1 "$SOURCE" "$DESTINATION" else if [ "$1" == "bgdebug" ] ; then touch /tmp/startrescuedebugflag.deleteme else set -x RUNNING=$(ps axu | grep myrescue | grep -v -e grep -e SCREEN | wc -l) if [ $RUNNING -lt 1 ] ; then screen -S bgrescue -d -m $0 bgrun else screen -S bgdebug -d -m $0 bgdebug fi fi fi