我有一个Windows 2008服务器机器有一个坏扇区的NTFS驱动器。
我有装在Linux的驱动器。
当我在/ media / hda2 / Users / Jason中列出(ls)时,dosnt给了我一个完整的列表,并给我一个input/输出错误。 不过即使目录/ media / hda2 / Users / Jason / Desktop没有显示在列表中,我仍然可以对其进行cd操作并检索我的文件。
现在我需要从/ media / hda2 / Users / Jason / ????的数据 哪里? 是我不记得的文件夹名称(是的,我试图猜测)。
内核日志告诉我,它得到一个I / O错误在扇区16564040现在我想低层次看看这个地区的原始数据,希望我可以看到一些令我记忆有关神秘的名字目录。
我曾尝试过Spinrite。
接下来我要研究的是dd_rescure,它与dd类似,但在恢复方面更好,但是我对这两者都不熟悉。
有谁知道一个实用程序在最低级别查看磁盘上的数据,或者可以帮助我如何处理dd_rescure实用程序。 甚至有一个完全不同的想法,我可以如何让我的文件回来。
谢谢
启动一个grml CD (这是一个包含dd_rescue的Linux)。
你会得到一个简单的shell。 在这里你应该使用dd_rhelp。
dd_rhelp与dd_rescue类似。 从其网站引用:
dd_rhelp is a bash script that handles a very useful program written in C by Kurt Garloff which is called dd_rescue, it roughly act as the dd linux command with the characteristic to NOT stop when it falls on read/write errors. This makes dd_rescue the best tool for recovering hard drive having bad sectors. (dd_rescue can be found : http://www.garloff.de/kurt/linux/ddrescue ) But using it is quite time consuming. This is where dd_rhelp come to help. In short, dd_rhelp will use dd_rescue on your entire disc, BUT it will try to gather the maximum valid data before trying for ages on bunches of badsectors. So if you leave dd_rhelp work for infinite time, it'll have the same effect as a simple dd_rescue. But because you might not have this infinite time (this could indeed take really long in some cases... ), dd_rhelp will jump over bad sectors whenever it encounters too much in a row. In the long run, it'll parse all your device with dd_rescue. You can Ctrl-C it whenever you want, and rerun-it at will, it'll resume it's job as it depends on the log files dd_rescue creates. In addition, progress will be shown in a ASCII picture of your device being rescued.
用法:
dd_rhelp /dev/yourdrive /mnt/backupdrive/yourdriverescued
如果驱动器上的硬件I / O错误尝试重新映射,您可能需要尝试运行驱动器制造商的磁盘testing实用程序。 它通常是一个可以刻录到CD并从其启动的ISO。 它会让你做一个完整的硬盘testing,这样做会检测并尝试重新映射坏道。 这可能会让你到一个点,你可以恢复你的数据,虽然有些可能是腐败的。
我自己并没有使用它,但是我被告知WinHex( http://www.x-ways.net/winhex/index-m.html )可以处理这样的工作。
我很惊讶有没有方便的工具来告诉你存储在一个特定的部门的文件,但我找不到一个,当我找一个。
在启动完成后用启动光盘引导机器(例如:ubuntu,knoppix),尝试使用以下命令挂载分区:或者,您可以将硬盘连接到linux机器并运行相同的程序。
运行cfdisk或fdisk -l(检查分区)
mount -t ntfs / dev / partition / mnt
尝试复制数据。
大多数持续读取错误是由于ECC代码与数据不匹配造成的,这可以在写入时由powerloss触发。 详细的IO错误名称应该是ECC不可纠正的错误。 否则,请忽略此post的其余部分。 对这个行业的数据没有任何可以做的。 但是,文件系统块和硬盘驱动器块之间的不匹配可能使您无法阅读完美的周边环境。 当文件系统尝试读取多个扇区(包括坏扇区)时,它会得到一个IO错误,并且不够聪明,只能看到一小部分读请求失败。 解决这个问题的一个办法是用零覆盖硬盘。 这可以通过以下方式完成:
dd if = / dev / zero = / dev / yourvolume seek = the_sector_number count = 1(如果您的设备有大于512byte的块bs = XXX,则使用适当的硬块大小)。
为了确保你有正确的扇区号码,首先尝试阅读失败的扇区:
dd if = / dev / yourvolume of = somefile skip = the_sector_number count = 1 bs = your_block_size_if_not_512
这样你应该可以读取周围的扇区并查明损坏的块。 很明显,这是一个非常危险的操作,并得到一个错误的dd参数可能导致更多的数据丢失。