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


17

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

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

我的推理是这样的:我尝试使用Acronis TrueImage,分区管理器和Image 4 DOS / Linux(两个应用程序),并且要花费一个多星期来复制数据。这意味着有一个星期,我无法使用计算机,这是不可接受的(除非这是我唯一的选择)。我希望它能起作用,所以我至少可以在复制时使用计算机。

如果需要,我可以启动到Live CD(不是真正的首选),也可以使用“ Drive B”,但是我想尽快删除该驱动器。


当然可以,为什么不呢?
迈克尔·汉普顿

Answers:


18

是的,只要满足以下两个条件,您想做的就可以正常工作:

  1. 您要添加的分区上没有(挂载)文件系统。
  2. 你dd'ing分区至少尺寸与一个同你dd'ing (即320 GB)。

它可以正常工作的原因是分区只是UNIX中的文件。如果它们的内容包含已挂载的文件系统,则它们的内容仅具有特殊含义。

假设您的布局如下所示:

1 TB = sda,两个分区,从中引导的sda1和要添加到的sda2

320 GB = sdb,一个分区,您正在从中开始的sdb1

您的命令如下所示:

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

bs=1M参数用于确保dd大量复制数据,而不是对每个扇区发出请求。


1
如果我=目的地的来源,我认为以上建议有误。

在上面的示例中,sdb1是源,而sda2是目标。我对答案进行了编辑,以使其更加清晰。
Michael Fenn 2014年

1
resize2fs复制后无需执行?即使大小不同?
Sopalajo de Arrierez,2015年

5

通常,在未安装任何分区时可以dd分区。如果必须在dd运行时挂载源分区以进行读取,最好使用-o ro参数将其挂载为只读。

如果要首先引导到源分区amd中,然后使用dd复制它,则可以执行mount -o ro,remount /使其仅在引导后才读取。


只读并不意味着文件系统不会摆弄日志,也不会重新组织可用空间或其他内容。
vonbrand

@vonbrand您能提供一个Linux文件系统实现的示例,该示例在RO模式下会执行该操作吗?
2014年

@vonbrand在UNIX文件系统中,非常大量地挂载确实意味着不应向基础设备发出任何写操作。
Michael Fenn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.