使用 dd 将分区复制到另一个分区,同时使用物理驱动器

使用 dd 将分区复制到另一个分区,同时使用物理驱动器

我不确定如何在主题中更好地解释这一点,所以“问题”可能不正确。但还是说说吧。我有三个硬盘。驱动器 A 是 320GB 驱动器,驱动器 B 是 80GB 驱动器,驱动器 C 是 1TB 驱动器。我已将数据从 80GB 驱动器复制到 1TB 驱动器,并将调整分区大小(这样我接下来就可以将数据从 320GB 驱动器复制到 1TB 驱动器)。

我的问题是:如果我在 1TB 驱动器上启动操作系统,我可以使用 dd 将 320 GB 驱动器复制到该物理驱动器上的另一个分区吗?我知道我不应该复制一个活动分区(这意味着如果我运行该操作系统,我就无法从 320 GB 驱动器复制数据)。

我的理由是:我尝试使用 Acronis TrueImage、Partition Manager 和 Image 4 DOS/Linux(两个应用程序),复制数据需要一周多的时间。这意味着一周内我都无法使用计算机,这是不可接受的(除非这是我唯一的选择)。我希望这个方法有效,这样我至少可以在复制时使用计算机。

如果必须的话,我可以启动到 Live CD(实际上不是一个首选选项)或使用“驱动器 B”,但我想尽快删除该驱动器。

答案1

是的,只要满足以下两个条件,您想要做的事情就会顺利进行:

  1. 您正在 dd 的分区上没有(已安装的)文件系统
  2. 您正在添加的分区至少与你正在添加的大小相同(即320 GB)。

它之所以能正常工作,是因为分区在 UNIX 中只是文件。只有当它们包含已挂载的文件系统时,其内容才具有特殊意义。

假设您有一个如下所示的布局:

1 TB = sda,两个分区,sda1 是您启动的分区,sda2 是您要向其添加数据的分区

320 GB = sdb,一个分区,sdb1,您要从中 dd

你的命令看起来会像这样:

dd if=/dev/sdb1 of=/dev/sda2 bs=1M

bs=1M参数是为了确保 dd 以大块的形式复制数据,而不是针对每个扇区发出请求。

答案2

一般情况下,在未挂载任何分区的情况下,dd 都是可以的。如果在 dd 运行时必须挂载源分区以供读取,最好使用 -o ro 参数以只读方式挂载它。

如果您想先启动到源分区 amd,然后使用 dd 复制它,您可以执行 mount -o ro,remount / 以使其在启动后只读。

相关内容