Linux

列出壞塊和受影響的文件

  • September 15, 2019

我用 4 到 5 年的筆記型電腦硬碟製作了完整的磁碟映像。

該硬碟位於筆記型電腦中,經常被帶到一些地方,因此,多年來,它可能在一定程度上承受了物理壓力。

硬碟仍然完好無損,但我使用的程序 Guymager 顯示了在擷取該圖像時遇到了多少壞扇區;具體來說,19個壞道。

這 19 個壞扇區影響了哪些 LBA 編號和哪些文件?

我首先想創建一個壞 LBA 的列表,然後我想在單獨的步驟中列出每個 LBA 上的每個文件。

什麼可以在獨立於文件系統的所有磁碟上列出塊?(低級)。什麼適用於 FAT 和 NTFS?

LBA 編號和壞塊檢測完全獨立於文件系統。查找文件完全依賴於文件系統。不要期望單一工具適用於所有文件系統。

你可以badblocks用來掃描壞塊,你可以smartctl用來獲取重新分配的塊或硬碟韌體檢測到的壞塊的LBA,fdisk如果你想在分區相對數之間計算(如果你做了例如badblocks /dev/sda1和LBA。

如另一個答案中所述,您可以找到 ext2/ext3/ext3 的受影響文件debugfs

您可以使用fibmap ioctl為所有文件系統查找給定文件的第 n 個塊的 LBA,但如果您想查找給定 LBA 的文件,這可能不切實際。還有filefrag,它可能使用了這個 ioctl。

我確信有 FAT(甚至可能用於 NTFS)的取證工具可以找到給定塊號的文件,但我不能隨便命名。

編輯

Google搜尋發現fatcat可用於 FAT 文件系統的取證分析;似乎-L您可以獲得特定集群的文件(您可以從 LBA 計算)。我對這個程序沒有經驗。Google搜尋更多可能會出現更多這樣的程序。

在 ext2/3/4 上使用 debugfs。首先根據block找到inode:

debugfs -D -R "icheck $sda3block4096" /dev/sda3

然後使用此 inode 號查詢文件:

debugfs -D -R "ncheck $inode" /dev/sda3

引用自:https://unix.stackexchange.com/questions/459154