Backup
從壞扇區到“損壞的文件”——它適用於 Linux/ext3,我可以適用於 Windows/NTFS 嗎?
當磁碟上的 SMART 檢查報告壞扇區時,能夠辨識具有壞扇區的文件並從備份中恢復它是很重要的。下面,我展示了我是如何為我的 Linux/ext3 VMWARE 伺服器做到這一點的——但是有人知道這是否可以在 Windows/NTFS 上做到嗎?
以下是我在 Linux/ext3 上的做法:我首先要求驅動器進行硬體表面掃描(在作業系統級別以下,使用驅動器上的 SMART 電路):
vserver:~# smartctl -t long /dev/sdc
我查看了結果:
vserver:~# smartctl -a /dev/sdc ... 196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 1 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 9 ... Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed: read failure 90% 27679 591363172
因此,一個扇區已經被標記為壞,9 個被標記為從“暫存”扇區空間中替換。更重要的是,第一個不可讀的邏輯塊地址 (LBA) 是 591363172。
我找到了這個數字“轉換”為的分區(以及其中的偏移量):
vserver:~# fdisk -lu /dev/sdc Device Boot Start End Blocks Id System /dev/sdc1 32 976773119 488386544 83 Linux
分區從扇區 32 開始。所以,壞扇區是……
vserver:~# bc -l 591363172-32+1 591363141
…距離分區開頭的 591363141 個扇區的偏移量。
現在我可以找到哪個文件被“軟管”了:
vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size Block size: 4096
這個 EXT3 文件系統的塊大小是 4096 字節,所以壞扇區破壞了文件系統中的這個塊:
vserver:~# bc -l 591363141*512/4096 73920392.62500000000000000000
並且塊號(73920392)對應到這個文件中:
vserver:~# debugfs debugfs 1.41.3 (12-Oct-2008) debugfs: open /dev/sdc1 testb 73920392 debugfs: testb 73920392 Block 73920392 marked in use debugfs: icheck 73920392 Block Inode number 73920392 18472967 debugfs: ncheck 18472967 Inode Pathname 18472967 /path/to/filewithbadsector
我從備份中恢復了該文件。
對於 Windows/NTFS,我可以遵循等效的程序嗎?
我知道您有一個 NTFS FS,並在該 FS 上執行 Windows。我不知道您是否“可以”啟動實時 Linux 以使用該驅動程序。
如果可以從 CD 或 USB 引導 Linux,則可以使用 ntfsprogs。看著 -
ntfscluster ntfsinfo
我相信 ntfscluster 會告訴您特定集群儲存的文件。我希望這能讓你朝著正確的方向前進。