我发现至少有两种方法可以克隆 USB 驱动器:(以 USB 驱动器/dev/sdb
为源,以 USB 驱动器为/dev/sdc
目标)
克隆
cp
:sudo cp /dev/sdb /dev/sdc
克隆
dd
:sudo dd if=/dev/sdb of=/dev/sdc bs=4096
这两个命令之间是否存在显著差异,为什么 dd 比 cp 更受欢迎?
答案1
在这种情况下,差异在于dd
被限制为每次读取 4096 字节块,因为您使用了bs=4096
。可能的效果是dd
会比 慢得多cp
。尝试使用更大的块大小(10M
,50M
?)。
最适合当前设备的特定缓冲区大小可能与cp
(或cat
)不同。您无法轻松控制 的cp
缓冲。dd
的实用性在以下情况下非常有用:
- 你有非常大型设备进行复制,因此值得进行实验来确定最佳块大小。
- 您只需复制磁盘的一部分。您可以指定
count
限制复制的块数。 - 您想恢复中断的复制。您无法使用 执行此操作
cp
,但您可以尝试使用dd
,方法是使用seek
和skip
选项。 您想将其通过管道传输到某些东西的标准输入(诚然,
cat
在这里也可以工作):dd if=/dev/sda bs=10M | ssh host dd of=/dev/sdb
dd
这篇 Unix 和 Linux 文章很好地讨论了实用性:
dd 与 cat — dd 现在还有用吗?