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)
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)
更多提示和想法:
status=progress可用于监控发生的情况,替代方法请参阅此“Unix&Linux”帖子。我建议添加conv=noerror,sync iflag=fullblock错误安全 -iflag不幸的是不需要 POSIX,但它在文档中提到并且在您使用错误的 bs/ibs 时需要(这部分由 Kamil Maciorowski 改进-进一步阅读)。
同样由Tim Williscroft 撰写:您可以添加约定conv=notrunc。
什么,你也可以考虑是一个把戏Mistiry那
似乎没有人知道 [...] dd 是一个非对称复制程序,这意味着它会先读取,然后写入,然后返回。可以通过管道DD本身并迫使其对称地进行复制,这样的:
dd if=/dev/sda | dd of=/dev/sdb。在我的测试中,在没有管道的情况下运行命令给了我 ~112kb/s 的吞吐量。使用管道,我得到了大约 235kb/s。我从未遇到过这种方法的任何问题。祝你好运!
虽然他似乎在含义上误用了对称这个词,但这可能也值得一试。
groxxda 的评论:“如果您这样做并指定块大小,请确保在每次调用时使用相同的块大小。” (相应的帖子也值得一读)
| 归档时间: |
|
| 查看次数: |
41099 次 |
| 最近记录: |