Era*_*zer 18 hard-drive drive dd
嗨,我正在尝试用损坏的硬盘修复我的 Windows 7 系统,但它仍在运行。
我正在尝试将所有数据复制到新驱动器以重新安装 Windows 7。驱动器名为 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
Run Code Online (Sandbox Code Playgroud)
如何解决这个“输入/输出错误”?
Den*_*ker 19
你自己说的:你的磁盘坏了。你可以试试ddrescue,它也许可以绕过损坏的路径。但请注意,您将丢失数据。
从备份中恢复会更容易:)
的正确用法ddrescue如下:
sudo apt-get install gddrescue
sudo ddrescue /dev/sdc1 /dev/sda1
Run Code Online (Sandbox Code Playgroud)
或者,如果您想通过管道stdout传输到进程监控工具:
sudo ddrescue /dev/sdc1 /dev/sda1 | pv
Run Code Online (Sandbox Code Playgroud)
我不知道这是否对任何人有用,但如果我在搜索中找到了这个页面,也许它会帮助某人(除了几个月前希望解决他的问题的 OP)。
在这种情况下,ddrescue 可能是最佳选择,用于数据恢复(不同于“修复”错误/磁盘,因为原始问题的措辞是这样的),正如丹尼斯所建议的那样。
或者,您也可以挂载磁盘并复制文件。如果有很多空白空间,或者如果您只想要一些特定文件,这会快得多。警告:在 Linux 机器上完成,这会丢失所有扩展属性,例如文件权限,因此对于 OS 文件来说是一个非常糟糕的选择,但对于用户文件来说是可以容忍的。从 Windows 执行它应该保留这些,但可能无法顺利处理错误,可能会使其运行速度非常慢。
实际“修复”扇区而不是绕过它们的另一种选择是重新分配坏扇区。如果您知道扇区号(在您的情况下,假设块大小为 11233976,假设块大小为 dd,扇区大小为 512),只需运行此程序,然后为您找到的每个新坏扇区再次运行:
hdparm –write-sector 11233976 –yes-i-know-what-i-am-doing /dev/sdb
Run Code Online (Sandbox Code Playgroud)
警告:这将破坏该扇区上的数据。所以一定要确保你真的知道你在做什么。如果无法读取该扇区,覆盖它会停止错误,但这意味着该扇区将包含垃圾,可能会损坏重要文件。
有关更多信息,请参阅:http : //www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/
如果您的磁盘有大量(可能有数千个)坏扇区(被视为 Current_Pending_Sector、Offline_Uncorrectable 或 Reallocated_Sector_Ct),或者它是新的并且仍在保修期内,或者如果数量随着时间的推移持续增加,那么您应该更换磁盘反正。不要让他们告诉您重新分配可修复磁盘。它只修复已知的坏扇区并消耗为重新分配保留的扇区。如果磁盘容易出现更多坏道,问题就会不断出现,每次都会破坏一些数据。
小智 6
虽然磁盘的某些部分已损坏,但您仍然可以复制磁盘的完好部分。
$ dd --help
...
noerror continue after read errors
...
Run Code Online (Sandbox Code Playgroud)
sudo dd if=/dev/sdc1 of=/dev/sda1 conv=noerror
Run Code Online (Sandbox Code Playgroud)