如何使用dd修复输入/输出错误?


14

嗨,我正在尝试用损坏的硬盘修复Windows 7系统,但它仍在运行。

我正在尝试将所有数据复制到新驱动器以重新安装Windows7。驱动器名为SQSERVICE。

我根本无法复制-参见下文:

$ sudo dd if=/dev/sdc1 of=/dev/sda1
dd: reading `/dev/sdc1': Input/output error
11233976+0 records in
11233976+0 records out
5751795712 bytes (5.8 GB) copied, 187.731 s, 30.6 MB/s

如何解决此“输入/输出错误”?


1
@Gertvddijk感谢修复我的拼写问题,我来自荷兰,仍然学习英语。
Erazer 2013年

Answers:


16

您自己说的:磁盘坏了。您可以尝试一下ddrescue,它也许可以解决折断的路径。但是请注意,您将丢失数据。

从备份还原将更容易:)

的正确用法ddrescue如下:

sudo apt-get install gddrescue
sudo ddrescue /dev/sdc1 /dev/sda1

或者,如果您要通过管道stdout传输到进度监视工具,请执行以下操作:

sudo ddrescue /dev/sdc1 /dev/sda1 | pv

是的,我说过,但是要从备份还原到该驱动器上..而我这个驱动器只有扇区问题,那么我该如何使用该命令?我只是新手Linux用户..
Erazer 2013年

2
那么您的备份与要备份的驱动器位于同一驱动器上吗?令人难以置信
Dennis Kaarsemaker 2013年

1
是相同的驱动器是的,但不在同一分区上。嗯,我有点傻:“(备份它不是项重要的根本
Erazer

6

我不知道这是否对任何人有用,但是如果我在搜索中找到此页面,也许会对某个人(希望在几个月前解决问题的OP除外)有所帮助。

正如Dennis所建议的那样,在这种情况下,ddrescue可能是最佳的数据恢复方法(不同于原始问题的措词“修复”错误/磁盘)。

或者,您也可以挂载磁盘并复制文件。如果有很多空白空间,或者只需要某些特定文件,则速度要快得多。警告:这是在Linux机器上完成的,它会丢失所有扩展属性,例如文件权限,因此对于OS文件来说是一个非常糟糕的选择,但对于用户文件是可以接受的。从Windows执行此操作可以保留这些内容,但可能无法顺畅地处理错误,从而可能使其运行非常缓慢。

实际“修复”扇区而不只是绕过它们的另一种方法是重新分配坏扇区。如果您知道扇区号(在您的情况下为11233976,假定您在dd中的块大小为512,而扇区大小为512),只需运行此代码,然后为找到的每个新坏扇区再次运行:

hdparm –write-sector 11233976 –yes-i-know-what-i-am-doing /dev/sdb

警告:这将破坏该扇区上的数据。因此,请确保您确实知道自己在做什么。如果无法读取该扇区,则将其覆盖将停止错误,但这将意味着该扇区将包含垃圾,可能会损坏重要文件。

请参阅此以获取更多信息:http : //www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/

并且如果您的磁盘有大量(可能成千上万个)坏扇区(被视为Current_Pending_Sector,Offline_Uncorrectable或Reallocated_Sector_Ct),或者它是新的并且仍在保修期内,或者该数目随着时间的推移持续增加,则应更换磁盘。不要让他们告诉您重新分配可以修复磁盘。它仅修复已知的坏扇区,并消耗为重新分配保留的扇区。如果磁盘容易出现更多坏扇区,则每次损坏某些数据时,问题只会不断出现。


1

当磁盘的某些部分损坏时,您仍然可以复制磁盘的大部分。

$ dd --help
...
 noerror   continue after read errors
...
sudo dd if=/dev/sdc1 of=/dev/sda1 conv=noerror
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.