我父母的 Windows 电脑有一个损坏的硬盘,上面有许多坏扇区,通过 Sata 电缆连接到虚拟的Ubuntu(在我的 Windows 桌面上)。我想使用 ddrescue(GNU)来创建磁盘映像。 有人能告诉我在 ubuntu 终端中输入什么才能实现以下目的吗:
- 调用 ddrescue。
- 跳过坏扇区(以避免浪费大量时间)。
- 创建一个日志(映射文件),以使 ddrescue 能够在计算机挂起、崩溃或重新启动时自行恢复。
- 避免对 Windows 系统文件 (MBR) 分区进行映像处理(因为我不打算恢复 Windows。我只想恢复数据,而不想浪费时间对 Windows 操作系统文件进行映像处理)。
附加问题(补充以上内容):
- 我是否应该在调用 ddrescue 之前卸载损坏的驱动器?我该怎么做?
- 我是否能够更彻底地第二次运行 ddrescue 来尝试对第一个图像中跳过的扇区进行成像,然后合并这两个图像以创建更完整的图像?
- 我可以控制映射文件保存自身的频率吗?
- 我可以控制在跳到下一个扇区之前尝试读取一个扇区的次数吗?
软件/硬件信息:我正在从 USB 记忆棒(虚拟机,并在我的 Windows 7 台式机上使用 Persistence)运行 Ubuntu GNOME。故障硬盘驱动器通过 Sata 电缆连接到主板。
附言:我使用虚拟 Ubuntu 这样做是否正确?或者我最好在 Windows 桌面上安装 ubuntu 作为双启动?我的印象是,虚拟机持久性设置将允许 ddrescue 映射文件在计算机崩溃或重新启动时自行恢复。
答案1
您应该检查哪个磁盘挂载在哪里。在我使用的 Linux 中,也许在所有 Linux 中,它的命令是 $mount 。最近使用了 ubuntu,它sudo parted -ls
确实可以很好地显示分区以及驱动器的品牌、型号和容量以及每个分区的大小。您将挂载目标驱动器(您将写入映像的驱动器)的一个分区。假设它是 sdb1,sudo mkdir /mnt/whatever
然后mount /dev/sdb1 /mnt/whatever
。mount 命令可以自动检测分区格式/文件系统,例如 ntfs 或其他任何格式。
(我使用过不使用 moutn 命令的 cygwin,虽然您没有使用 cygwin,但在 cygwin 中查找该信息会有所不同,而且会稍微复杂一些)
您需要知道 /dev/sda 是什么设备,/dev/sdb 是什么设备,等等
您实际上不应该让文件系统(如 /mnt/whatever)指向它(您从中获取映像的驱动器)。就像在 Windows 中一样,您实际上不应该为驱动器分配驱动器号。有一种想法是,如果是这样,那么某些东西可以在您不想写入时轻松地写入它。
我真的不是这方面的专家,但我已经从 cygwin 和 ubuntu 管理过它
在 cygwin 中,基本命令如下
$ ddrescue -b 1M /dev/sdb /cygdrive/c/crp/asdf.a
或者在 ubuntu 中
$ ddrescue -b 1M /dev/sdb /mnt/blah/asdf.a
本质上是一样的,只要确保你有所述的“to”目录,这样你就可以在那里写入文件。
我在 cygwin 中使用的命令(我可能至少在第一次使用时就应该去掉 -r3)是ddrescue -r3 -b 1M /dev/sdb /cygdrive/c/crp/fsfwr_.fc b.log
您可以像我在那里一样添加一个日志文件。但我发现 ddrescue 的输出无论如何都很简短。有些添加 --force / -f,即$ ddrescue -r3 -b 1M --force /cygdrive/c/crp/debian-live-7.6.0-i386-gnome-desktop.iso /dev/sdb
但那个 -f/--force 似乎只是意味着覆盖“to”文件(如果已经存在)。所以这并不重要,因为如果您想再次执行 ddrescue,您可以自己删除“to”文件。
我有点怀疑它是否会花费几个小时或更长时间,将重试设置为 3 次。
我读到 -r 表示重试,默认值为 0,最好第一次就去掉 -r。这样会更快。
关于 -r 的一些建议,例如常用的 -r3
https://www.technibble.com/guide-using-ddrescue-recover-data/
-r3 tells ddrescue to retry bad sectors 3 times before giving up. Note: On a failing drive you may want to eliminate this option the first time so as to not waste time hammering on bad sectors and risking drive failure. You can always use the logfile to go back and retry the bad sectors after you get an image from the first sweep.
我使用过 -b 1M,这可能非常重要,因为默认值是 512,而这可能需要很长时间。dd 也有同样的问题。也许你可以使用 4M,而且 4M 可能更好,但主要区别在于指定 1M 还是默认的 512 字节。我很确定我已经使用 dd 默认的 512 字节,这花了很长时间。ddrescue 可能也一样。所以至少使用 -b 1M。
关于 -d,我还没有真正尝试过是否使用它。这与更直接地访问磁盘有关。无论有没有它,我都感觉还行,所以我倾向于不用它。
先写“from”,再写“to”,所以不要混淆。但一定要仔细检查。
请注意我已经指定了一个日志文件。
显然,不用多说,你也可以查看 ddrescue 的手册
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
ddrescue 的某个版本不太好。您需要 GNU ddrescue。 https://askubuntu.com/questions/211578/whats-the-difference-between-ddrescue-gddrescue-and-dd-rescue
您可以使用 testdisk 读取 dd 或 ddrescue 创建的文件。