Backup

從壞扇區到“損壞的文件”——它適用於 Linux/ext3,我可以適用於 Windows/NTFS 嗎?

  • December 14, 2012

當磁碟上的 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 會告訴您特定集群儲存的文件。我希望這能讓你朝著正確的方向前進。

引用自:https://serverfault.com/questions/311270