0. 背景介绍
现有一块装有ubuntu系统的旧硬盘(sda,电脑主机的系统硬盘),需要将其包括系统在内的所有数据直接迁移到新硬盘中(sdb,新硬盘未进行分区)
注:新硬盘连接电脑的方式可以选择接入主板的第二硬盘位,或者使用硬盘盒外接也行。
1. 参照旧硬盘的分区对新硬盘进行分区
打开GParted软件,这个软件的安装可以参考https://blog.csdn.net/In_engineer/article/details/120372055.
sda的分区如下图,一共有两个分区(sda1,sda2)
(1) 按照上面的sda分区格式对sdb进行创建分区,点击"添加"以后,再点击上面的对号,就会创建出一个名为sdb1的分区
(2) 参照sda1修改sdb1分区的名称(在sdb1分区上鼠标右键->分区名称)
(3) 参照sda1修改sdb1分区的标识(在sdb1分区上鼠标右键->管理标识),选择完标识后点击关闭->对号->应用
(4) 同理sdb的第二个分区参考上面进行创建,最终的结果如下:
2. 将旧硬盘分区数据迁移到新硬盘对应分区中
特此声明:此方法只适合目标硬盘容量不小于源硬盘的情况。一般情况此步骤做完后,换上新硬盘就直接可以用了,如果开机启动grub引导程序有问题,请参考本文补充内容
迁移sda1分区数据:
root@sun-pc:~$ pv -tpreb /dev/sda1 | dd of=/dev/sdb1 bs=4k
5MiB 0:00:02 [ 177MiB/s] [=========> ] 21% ETA 0:00:10
迁移sda2分区数据:
root@sun-pc:~$ pv -tpreb /dev/sda2 | dd of=/dev/sdb2 bs=4k
391GiB 0:58:10 [ 177MiB/s] [=========> ] 21% ETA 3:38:41
pv命令说明:
作用:用来监视程序执行进度
安装:sudo apt-get install pv
参数:
-t:显示经过的时间
-p:显示进度条
-r:显示传输速率
-e:显示预估剩余完成时间
-b:显示已完成数据总量
dd命令说明:
语法:
dd if=源分区 of=目标分区
参数:
bs:一次最多读取和写入字节(默认值:512,经测试bs=4k时可以达到最大速度100M/s左右);覆盖ibs和obs
补充:
1. 新硬盘启动有问题时的对策(需要启动U盘)
使用boot-repair工具可以修复引导程序正确执行。
1. 关闭电脑,插入带有Ubuntu系统的启动U盘
2. 启动电脑,选择进入启动U盘的系统
3. 安装boot-repair工具:
root@sun-pc:~$ sudo add-apt-repository ppa:yannubuntu/boot-repair
root@sun-pc:~$ sudo apt-get update
root@sun-pc:~$ sudo apt-get install boot-repair
4. 运行boot-repair工具:
root@sun-pc:~$ boot-repair
点击"GRUB位置",“默认启动的操作系统"和"单独的/boot/efi分区"改为新硬盘对应的分区,然后点击"应用”
5. 关闭电脑,拔掉启动U盘
6. 开机,正常来讲就可以进入系统了