有没有办法从一个硬盘到另一个硬盘进行扇区级别的复制/克隆?

有没有办法从一个硬盘到另一个硬盘进行扇区级别的复制/克隆?

不谈细节,我正试图将 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. 从源读取一个块,等待它准备好
  2. 将此块写入目标,等待直至准备就绪
  3. 转到 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

这将导致第一个链不应该等待,直到第二个链没有吃完它的输出。

相关内容