我用 4 到 5 年的笔记本电脑 HDD 制作了完整的磁盘映像。
该硬盘位于经常随身携带的笔记本电脑中,因此多年来,它可能经历了一定程度的物理压力。
HDD 仍然完好无损,但我使用的程序 Guymager 显示了在捕获该图像时遇到了多少个坏扇区;具体来说,有19个坏扇区。
这19个坏扇区影响了哪些LBA号和哪些文件?
我首先想创建一个错误 LBA 的列表,然后我想在单独的步骤中列出每个 LBA 上的每个文件。
答案1
在 ext2/3/4 上使用 debugfs。首先根据block找到inode:
debugfs -D -R "icheck $sda3block4096" /dev/sda3
然后使用这个 inode 号来查询文件:
debugfs -D -R "ncheck $inode" /dev/sda3
答案2
列出独立于文件系统的所有磁盘上的块有何作用? (低级)。什么适用于 FAT 和 NTFS?
LBA 号和坏块检测完全独立于文件系统。查找文件完全依赖于文件系统。不要指望一个工具适用于所有文件系统。
您可以用于badblocks
扫描坏块,您可以用于smartctl
获取重新分配的块的LBA或硬盘固件检测到的坏块,fdisk
如果您想在分区相对数之间进行计算(如果您做了例如badblocks /dev/sda1
和LBA。
正如另一个答案中提到的,您可以找到 ext2/ext3/ext3 的受影响文件debugfs
。
您可以使用fibmap 读写控制查找所有文件系统中给定文件的第 n 个块的 LBA,但如果您想查找给定 LBA 的文件,这可能不切实际。还有filefrag
,它可能使用此 ioctl。
我确信有适用于 FAT(甚至可能适用于 NTFS)的取证工具,可以找到给定块号的文件,但我无法立即命名。
编辑
谷歌搜索发现肥猫用于 FAT 文件系统的取证分析;看来-L
您可以获得特定集群的文件(您可以从 LBA 计算)。我对这个程序没有经验。更多地谷歌搜索可能会发现更多这样的程序。
答案3
NTFS、ext3、ext4
如果您已使用 复制了故障驱动器上的数据ddrescue
,则使用ddrutility
它就是为了这个目的而创建的。
ddrescue
我成功地让它在 20 秒内列出了给定映射文件的受影响的 NTFS 文件。
它将日志文件写入当前目录。
链接页面提到了对 NTFS、ext3 和 ext4 的支持。
BTFS
btrfs 有它自己的内置scrub
函数。