ubuntu-18.04系统迁移

通常我们安装好ubuntu-18.04后都要花很长时间来配置使其更好地符合自己的使用习惯,但是当换新的设备或者硬盘后不可能再花很多时间重新配置一遍,这既浪费时间又没有意义的苦差事,因此通过系统备份还原能够快速地实现系统的迁移复制。

准备

必备硬件: 一个至少4GiB的U盘用于,一个移动硬盘用于存放系统备份数据
先从官网Ubuntu 18.04.5 LTS (Bionic Beaver) 下载ubuntu-18.04.4-desktop-amd64.iso文件,然后用Startup Disk Creator工具制作一个Ubuntu启动盘,用于在系统还原时提供一个操作环境。也可以使用下列命令下载iso文件:

1
wget https://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-desktop-amd64.iso

如下图所示用ubuntu-18.04.4-desktop-amd64.iso制作一个可启动U盘,点击Make Startup Disk按钮开始进行启动U盘的制作。

startupdiskcreator

图1 制作启动U盘

下面安装备份还原使用的工具:

1
2
sudo apt-get install dump
sudo apt-get download dump

上面最后一个命令会下载dump_0.4b46-3_amd64.deb,需要将这个工具安装到使用U盘启动的Live操作系统。

系统备份

查看当前系统硬盘分区和文件系统:

1
2
3
4
5
6
7
lsblk -f

parted -l

fdisk -l

df -T

filesystem

图2 当前的分区和文件系统信息

也可以打开/etc/fstab文件来验证分区和文件系统的信息

fstab

图3 fstab文件的内容

dump

图4 dump命令介绍

restore

图5 restore命令介绍

将根分区//home/boot三个分区都备份:

1
2
3
sudo dump -0u -f /media/charleye/Material/filesystem-backup/root/2020-09-13/full-root-backup.20200913 /dev/mapper/lvmroot-root -z
sudo dump -0u -f /media/charleye/Material/filesystem-backup/home/2020-09-13/full-home-backup.20200913 /dev/mapper/lvmhome-home -z
sudo dump -0u -f /media/charleye/Material/filesystem-backup/boot/2020-09-13/full-boot-backup.20200913 /dev/sda1 -z

系统还原

在新设备上让BIOS从U盘启动引导进入Live Ubuntu-18.04操作系统,然后手动安装dump工具,然后根据备份时得到的设备分区信息对现在的新硬盘进行相同的分区并格式化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
sudo dpkg -i dump_0.4b46-3_amd64.deb

# 下面分区根据具体情况而定
sudo pvcreate /dev/sda2
sudo pvcreate /dev/sda3

sudo vgcreate lvmroot /dev/sda2
sudo vgcreate lvmhome /dev/sda3

sudo lvcreate -L +70G -n root lvmroot
sudo lvcreate -L +1T -n home lvmhome

sudo mkfs.ext4 /dev/mapper/lvmroot-root
sudo mkfs.ext4 /dev/mapper/lvmhome-home
sudo mkfs.ext4 /dev/sda1 # 对应/boot分区

sudo mount /dev/lvmroot/root /mnt/
pushd /mnt/

sudo restore -f /media/charleye/Material/filesystem-backup/root/2020-09-13/full-root-backup.20200913 -r

sudo mount /dev/sda1 /mnt/boot/
pushd /mnt/boot/
sudo restore -f /media/charleye/Material/filesystem-backup/boot/2020-09-13/full-boot-backup.20200913 -r

sudo mount /dev/lvmhome/home /mnt/home
pushd /mnt/home
sudo restore -f /media/charleye/Material/filesystem-backup/root/2020-09-13/full-root-backup.20200913 -r

sudo mount --bind /dev/ /mnt/dev/
sudo mount --bind /proc/ /mnt/proc/
sudo mount --bind /sys/ /mnt/sys/

sudo cp /etc/resolv.conf rootfs/etc/resolv.conf

sudo chroot /mnt

apt-get update
apt-get install resolvconf

update-grub
grub-install /dev/sda

dpkg-reconfigure resolvconf
dpkg-reconfigure tzdata
vim /etc/systemd/system/network-online.target.wants/networking.service
# 将TimeoutStartSec=5min改为TimeoutStartSec=2sec
# 不然的话,在还原系统后第一次重启因为网络配置参数不对会等待五分钟以后才能进入登录界面,
# 提示信息是A start job is running for Raise network interface(5min 1s)

# blkid查看/dev/sda1分区的UUID
# 将fstab文件中/boot分区对应的UUID用这个新的替换掉

# 清理掉挂载
exit
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt/dev
sudo umount /mnt

至此,重启之后就能够正常进入系统,说明系统迁移复制成功。