使用 dd 将 HDD 克隆到 SSD?

dob*_*bbs 17 ssd hard-drive clone dd

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

dd if=/dev/${oldSataSpinningDisk} of=/dev/${newSSD}
Run Code Online (Sandbox Code Playgroud)

要将在 SATA HDD 上运行的当前系统的内容克隆到新的 SSD?主要是,Windows 7 会启动并实际工作吗?

小智 26

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

dd if=/dev/oldsataspinningdisk of=/dev/newssd bs=64K conv=noerror,sync
Run Code Online (Sandbox Code Playgroud)

  • 我会添加“status=progress”来看看当 dd 发挥它的魔力时发生了什么。 (11认同)

Cad*_*oiz 10

只是为了加起来(非常好)现有 答案

为什么需要块大小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 
Run Code Online (Sandbox Code Playgroud)

更多提示和想法:

似乎没有人知道 [...] dd 是一个非对称复制程序,这意味着它会先读取,然后写入,然后返回。可以通过管道DD本身并迫使其对称地进行复制,这样的:dd if=/dev/sda | dd of=/dev/sdb。在我的测试中,在没有管道的情况下运行命令给了我 ~112kb/s 的吞吐量。使用管道,我得到了大约 235kb/s。我从未遇到过这种方法的任何问题。祝你好运!

虽然他似乎在含义上误用了对称这个词,但这可能也值得一试。

groxxda 的评论:“如果您这样做并指定块大小,请确保在每次调用时使用相同的块大小。” (相应的帖子也值得一读)

  • 带有所有火花的完整命令: `sudo dd if=/dev/sda3 of=/dev/nvme0n1p4 bs=64k conv=sync,noerror,notrunc iflag=fullblock status=progress ` (4认同)

归档时间:

查看次数:

41099 次

最近记录:

4 年,6 月 前