如何使用 DD 将数据从旧驱动器迁移到新驱动器?

如何使用 DD 将数据从旧驱动器迁移到新驱动器?

我正在将笔记本电脑上的内置 SATA 硬盘从 40G 驱动器升级到 160G 驱动器。我有一个带有 SATA 卡的 Linux/Ubuntu 桌面。我实际上想在工作中对几个 CentOS 和 FreeBSD 机器做同样的事情,看起来这会有相同的解决方案。

我听说我可以使用DD将 40G 分区镜像到 160G 驱动器,或者我可以将 40G 分区另存为本地系统上的映像,然后将该 40G 映像复制到 160G 驱动器。

谁能描述我如何做到这一点?我还需要任何其他实用程序吗,例如gparted

答案1

通常我会建议一个解决方案,例如“使用外部外壳连接第二个硬盘驱动器,从 Linux CD 启动,然后使用诸如 之类的命令dd if=/dev/sda of=/dev/sdb bs=1G,但由于您想使用相同的技术进行工作,我有可能是更好的解决方案。

我所有的服务器和笔记本电脑都在工作时使用克隆属。有两种使用方法...其中一种使用专用服务器,对您来说可能有点过分,另一种使用启动 CD 和外部硬盘驱动器。

这个想法是,您使用 Clonezilla CD 启动并拥有一个较大(比源驱动器更大)的外部 USB 驱动器。 Clonezilla 会引导您制作现有驱动器的映像,然后关闭机器电源,更换驱动器,然后重新启动到 Clonezilla,它会引导您恢复数据。

这使您有机会 A) 将映像放在更大的驱动器上,B) 保留数据的备份。

答案2

您的第一个任务是将两个磁盘连接到现有的 Linux 系统或将新磁盘连接到原始系统。

你一定是非常小心,因为将空白磁盘复制到好磁盘上非常简单!

要最终获得引导扇区和所有内容,您可以执行以下操作:

dd if=/dev/hdx of=/dev/hdy

hdx你的40G盘在哪里,hdy你的160G盘在哪里。您会注意到没有像 之类的分区号/dev/hdx1。这会复制整个磁盘、分区信息等。

您的新磁盘将与旧磁盘一样,分配 40G。当它放回笔记本电脑时,它应该会立即启动。希望你用过LVM?否则希望您没有使用所有分区?跨越这一点需要更多的信息。

另一种解决方案是转储每个单独的分区。这需要更多的态势感知,因为您需要重新创建启动信息。

所有这些最适合用于克隆计算机,而不是升级硬盘。使用备份恢复到新安装要好得多。

答案3

当你使用 dd 来复制磁盘,这样做有很多缺点:

  1. 目标的大小必须与源的大小完全相同或更大
  2. 复制后,您需要调整分区大小以使用任何额外空间
  3. 您将浪费时间复制可用空间
  4. 旧磁盘中存在的任何碎片都会被保留

使用 Ghost4Linux、partclone 或 Clonezilla 等映像程序至少可以处理数字 2 和 3。您还可以简单地格式化新磁盘,安装它,并使用cp -ax(以 root 身份)复制所有文件,然后重新安装新驱动器上的引导加载程序。该方法没有任何上述缺点。

答案4

你问如何用 dd 来做到这一点,但我更好地成功地通过管道输出倾倒进入恢复。鉴于来源广告1s1a和目标广告2s1a:

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

我在 FreeBSD 上尝试过这个,实际上我在FreeBSD 论坛

相关内容