使用 dd 将 HDD 克隆到 SSD?

使用 dd 将 HDD 克隆到 SSD?

我有一台运行 Windows 7 的家用机器,我想知道是否可以执行如下命令:

dd if=/dev/${oldSataSpinningDisk} of=/dev/${newSSD}

将 SATA HDD 上运行的当前系统的内容克隆到新的 SSD?主要是,Windows 7 是否可以启动并实际运行?

答案1

只是为了补充(非常好)现存的 答案

为什么需要块大小bs=64?虽然它可能不是所有情况下最快的设置,但它仍然比标准设置运行得更快(大约 4 倍)……至少在我的系统上是如此 - 似乎在许多其他系统上也是如此。蒂姆·威利斯罗夫特表示 100M 可能更快,需要更多研究可能需要 已经完成了,看看吧

测试数据在这里: (我取消了第一次运行,因为在我看来它花费的时间太长了。)

$ sudo dd if=/dev/sdb4 of=/dev/sda2 status=progress
12962501120 bytes (13 GB, 12 GiB) copied, 394 s, 32,9 MB/s
$ sudo dd if=/dev/sdb4 of=/dev/sda2 status=progress bs=64K 
13143113728 bytes (13 GB, 12 GiB) copied, 98,0026 s, 134 MB/s 

更多提示和想法:

似乎没人知道 [...] dd 是一个非对称复制程序,这意味着它会先读取,然后写入,然后返回。您可以将 dd 管道化到自身并强制它对称地执行复制,如下所示:dd if=/dev/sda | dd of=/dev/sdb。在我的测试中,不使用管道运行命令时,吞吐量约为 112kb/s。使用管道时,我得到了约 235kb/s。我从未遇到过这种方法的任何问题。祝你好运!

虽然他似乎误用了“对称”这个词的含义,但这可能也值得一试。有关此方法的其他信息,请访问格罗克斯达:“如果你这样做并指定了块大小,请确保在每次调用时使用相同的块大小。”(各自岗位也值得一读)

答案2

是的,这个想法是对的,但是命令很糟糕。如果出现一个读取错误,dd 命令就会跳过一个字节,从而导致分区方案出现错误。您需要指定将每个字节复制到相同的物理位置(从头开始)。

dd if=/dev/oldsataspinningdisk of=/dev/newssd bs=64K conv=noerror,sync

答案3

我最近用普通香草做了这个:

sudo dd if=/dev/sda of=/dev/sdb

使用 ubuntu mate live usb 启动我的笔记本电脑。

对于 1TB 硬盘,大约需要 6 个小时 @43mb/s,用新的 SSD 启动我的笔记本电脑,一切(所有 Windows 和 Linux 分区)都运行正常。

相关内容