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


29

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

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

谁能描述我该怎么做?我是否需要任何其他实用程序,例如gparted


3
啊哈...这是第一个问题!
Harshit Shrivastava

2
问题一!我也是这个网站的提议者,我想我会从一个相当技术性的问题开始这个网站。我得到了一件T恤和一些赃物的奖励。
Stefan Lasiewski,2015年

Answers:


6

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

您必须非常小心,因为在空白磁盘上复制空白磁盘非常简单!

要结束所有引导扇区,您可以执行以下操作:

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

hdx40G磁盘和hdy160G磁盘在哪里。您会注意到没有像这样的分区号/dev/hdx1。这将复制整个磁盘,分区信息和所有磁盘。

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

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

所有这些都最好用于克隆计算机,而不是升级硬盘。最好使用备份还原到新安装。


17

通常,我会建议一个解决方案,例如“使用外部机箱连接第二个硬盘驱动器,从linux CD引导,然后使用诸如这样的命令dd if=/dev/sda of=/dev/sdb bs=1G,但是由于您要使用相同的技术来工作,因此我可能会更好的解决方案。

我的所有服务器和笔记本电脑都使用Clonezilla在工作中成像。有两种使用方法:一种使用专用服务器,可能对您而言太过苛刻了;另一种使用引导CD和外部硬盘驱动器。

这个想法是,您使用Clonezilla CD进行引导,并且具有一个较大的(比源驱动器大)外部USB驱动器。Clonezilla会引导您制作现有驱动器的映像,然后关闭计算机电源,更换驱动器,然后重新启动进入Clonezilla,然后引导您还原数据。

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


5

尽管可以使用dd这样复制磁盘,但是这样做有很多缺点:

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

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


3

要简单地复制分区,可以使用dd if=/dev/srcDrive of=/dev/dstDrive或类似的东西。我建议您阅读其手册页。抱歉,我无法提供更多信息,因为我现在正在工作。


2

您问过如何用dd来实现,但是我最好用管道将dump的输出传递到restore。给定源ad1s1a和目标ad2s1a

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

我在FreeBSD上尝试过,实际上我在FreeBSD论坛上找到了它


1

一个简单的例子是这样的:

dd if=/dev/sda of=/dev/sdb

但是,如果您有特殊需要,则应该阅读手册页(man dd)或在Google上进行搜索。

另一个想法可能是使用rsync(不要忘记设置正确的选项,例如-az [打包文件而不是一个接一个地复制文件]或--numeric-ids [使用uid / gid而不是像“ root”],也许还有其他一些)。该链接包含许多示例。

如果新的HDD没有分区,则可以使用gparted或palimpset。

当您不确定时,我将格式化硬盘,然后使用rsync同步数据。


1

好了,我通过同时连接磁盘和Live cd进行了类似的迁移。

  1. 您在第二个磁盘中重新创建第一个磁盘的分区信息,可能使某些分区更大以使用额外的空间,依此类推。
  2. 然后,假设您拥有/ dev / sda {1,2,3,4}并想将它们复制到/ dev / sdb {1,2,3,4},则您的mkdir / mnt / sd {a,b} {1 ,2,3,4}并在每个目录中挂载每个分区(或者,如果您要一个接一个地做,则可以制作一个/ mnt / origin / mnt / destination并挂载/卸载每对)
  3. 然后,执行cp -avr / mnt / origin /。/ mnt / destination /(或cp -avr/mnt/sda1/。/mnt/sdb1/
  4. 等待您浏览网页:)
  5. 记住要重新安装grub,lilo或您使用的任何引导管理器。

这样,您将在复制文件时对文件进行碎片整理,也可以更改分区中的文件系统(从reiserfs或ext3迁移到ext4等),但是请记住,复制后要编辑/ etc / fstab以适应需要新情况。

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.