![使用 dd 将分区复制到另一个分区,同时使用物理驱动器](https://linux22.com/image/1351505/%E4%BD%BF%E7%94%A8%20dd%20%E5%B0%86%E5%88%86%E5%8C%BA%E5%A4%8D%E5%88%B6%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%88%86%E5%8C%BA%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BD%BF%E7%94%A8%E7%89%A9%E7%90%86%E9%A9%B1%E5%8A%A8%E5%99%A8.png)
我不确定如何在主题中更好地解释这一点,所以“问题”可能不正确。但还是说说吧。我有三个硬盘。驱动器 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
是的,只要满足以下两个条件,您想要做的事情就会顺利进行:
- 您正在 dd 的分区上没有(已安装的)文件系统到。
- 您正在添加的分区到至少与你正在添加的大小相同从(即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 / 以使其在启动后只读。