不谈细节,我正试图将 MacBook 中 500GB 驱动器的内容复制到另一个 500GB 驱动器。但这却带来了意想不到的麻烦,因为该驱动器包含 OS X 分区和通过 Apple 的 Boot Camp 安装 Win 7 的 NTFS 分区。
除了克隆兹拉到目前为止,我看过的工具都有一些限制。Mac 工具不想处理 NTFS 分区。Windows 工具对 HFS+ 分区和/或混合 MBR/GPT Boot Camp 分区一无所知。
Clonezilla 看起来可以满足我的要求,但显然我不知道如何使用它。在执行完我认为是扇区到扇区的复制后,我发现只有 NTFS 分区被迁移了。其他分区显然是空的。(坦率地说,我也不确定 Clonezilla 是否正确迁移了分区表)。
注意:使用 SATA 读取/写入这些驱动器的所有扇区需要超过 2 个小时。因此,我并不打算使用反复试验的方法来缩小要使用的 Clonezilla 选项的正确组合范围。
我开始想,也许答案是启动 Linux(可能是 Ubuntu),然后使用一些古老的 BSD 命令。问题是我不知道要使用什么命令(或参数)才能从一个驱动器到另一个驱动器进行扇区级复制。据我所知,驱动器的扇区数相同,因此应该微不足道。叹息。
是的,dd
做工作。(呼!)
我特别感谢 serverfault.com 上相应问题/交流的答案中的链接,因为我从来没有想过要去那里查看。
以下是我从 serverfault 上的交流中了解到的一些额外调整。
不要使用默认的 512 字节传输大小。我使用的形式如下
dd if=/dev/sda of=/dev/sdb bs=8192
:显著地增加了数据传输速率。(我的两个驱动器的大小都是 8192 的倍数。不确定这是否重要,但这样做感觉更安全)。有一种方法可以从
dd
命令中获取一些进度状态。显然dd
当它收到正确的信号时,会显示其当前传输状态。我使用了这个 serverfault 答案。但是,我使用的间隔是 120 秒,而不是 10 秒,因为我不想被进度信息“淹没”。
大约花了 2 小时 20 分钟才将我的 500GB 驱动器完全克隆到另一个 500GB 驱动器。dd 的最终状态消息是
500107862016 bytes (500 GB) copied, 8353.86 s, 59.9 MB/s
虽然这个过程在选项方面有所欠缺,但它的简单性和完整性无疑弥补了这一缺陷。:-)
答案1
在 Linux 中,dd 命令可以执行您想要的操作。
https://serverfault.com/questions/4906/using-dd-for-disk-cloning
只需确保不要将空驱动器克隆到要克隆的驱动器上。
答案2
如果你想快速地... 那么dd
这不是你想要的。为什么?
因为它是单线程的。这意味着它以这种方式工作:
- 从源读取一个块,等待它准备好
- 将此块写入目标,等待直至准备就绪
- 转到 1
实际上,下一个块的写入和读取可以同时发生,但 dd 不能做到这一点。
要进行快速备份,您可以使用缓冲工具。与 类似dd
,它基本上从标准输入到标准输出工作,因此您可以在管道中使用它,使其两个站点真正并行工作。
您可能最喜欢的参数化是:
buffer -i /dev/sdX -o /dev/sdY -s 8192 -b 2048
它将快速克隆/dev/sdX
到/dev/sdY
。
您还可以使用它buffer
来加速任何管道 shell 命令:
pipe-chain-commands1 | buffer -s 8192 -b 2048 | pipe-chain-commands2
这将导致第一个链不应该等待,直到第二个链没有吃完它的输出。