Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

问题需求

适用于将整个linux系统迁移到一块新的硬盘新电脑上。

原 linux(ubunt20.04)安装在 128G 备用盘上,新硬盘 512G固态硬盘

原硬盘分区情况

/ 50G
/home 78G
1
2
3
4
5
6
7
8
9
10
11
Disk /dev/sda:119.25 GiB,128035676160 字节,250069680 个扇区
Disk model: Lenovo SPEED UP-
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xdde609a1

设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 * 2048 97726463 97724416 46.6G 83 Linux
/dev/sda2 97726464 250068991 152342528 72.7G 83 Linux

新硬盘分区情况:

/ 107G
/home 405G
1
2
3
4
5
6
7
8
9
10
11
Disk /dev/nvme0n1:476.96 GiB,512110190592 字节,1000215216 个扇区
Disk model: THNSF5512GPUK TOSHIBA
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:ECCB0DE6-01D8-4C75-9BB9-4FA0441F14D1

设备 起点 末尾 扇区 大小 类型
/dev/nvme0n1p1 2048 209717247 209715200 100G Linux 文件系统
/dev/nvme0n1p2 209717248 1000215182 790497935 377G Linux 文件系统

tar方法

对新盘分区

1
2
3
4
sudo fdisk -l
sudo fdisk /dev/nvme0n1
sudo mkfs.ext4 /dev/nvme0n1p1
sudo mkfs.ext4 /dev/nvme0n1p2

img

img

img

img

img

img

img

img

选择磁盘,删除原有分区,新建分区,格式化

备份系统

/ 分区备份

1
sudo mount /dev/nvme0n1p1 /media/liupei/

推荐使用 pigz多线程提高迁移速度

1
2
3
sudo apt install pigz

sudo tar --use-compress-program=pigz -cvpf /media/liupei/u20.tgz --exclude=/cdrom --exclude=/home --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/run --exclude=/tmp /

/ 分区迁移

将系统解压到目标磁盘

1
sudo tar --use-compress-program=pigz -xvpf u20.tgz -C /media/liupei/

重建exclude的目录

1
sudo mkdir cdrom home lost+found media mnt proc run tmp

/home 分区备份与迁移

1
2
3
4
mkdir tmp
sudo mount /dev/nvme0n1p2 tmp ceshi/
sudo tar --use-compress-program=pigz -cvpf ceshi/h.tgz --exclude=/home/ceshi /home/liupei/
sudo tar --use-compress-program=pigz -xvpf ceshi/h.tgz -C ceshi/

配置文件修改

系统启动文件配置

把新硬盘的/boot/grub/grup.cfg里面的uuid替换掉

如果没有把boot单独分区,那么只要将里面的uuid全部改成新硬盘的uuid,(考虑启动过程没有其他挂载的情况)。如果是单独分区的话,注意这个文件下还有boot的uuid的值(我的硬盘没有boot单独分区)。

uuid查询方法:1. sudo blkid ; 2. ls -l /dev/disk/by-uuid

1
2
3
sudo vim /boot/grub/grub.cfg

%s /uuid_old/uuid_new/g

分区挂载配置

修改 /etc/fstab 文件,把要启动自动挂载的分区都写上

1
2
3
4
5
6
7
8
sudo vim /etc/fstab

%s /uuid_root_old/uuid_root_new/g
%s /uuid_home_old/uuid_home_new/g

# or
genfstab -U /sda1 >> /mnt/etc/fstab
genfstab -U /sda2 >> /mnt/etc/fstab

grub安装与更新

Ubuntu使用BIOS启动时, GPT分区表下安装grub2报错:

1
2
3
4
5
6
iupei@T470:~$ sudo grub-install /dev/nvme0n1
[sudo] liupei 的密码:
正在为 i386-pc 平台进行安装。
grub-install:警告: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install:警告: 无法嵌入。在此次安装中 GRUB 只能通过使用块列表安装。但是块列表是不可信赖的,不推荐使用。.
grub-install:错误: 停止进行块列表安装.

解决方法0:(仅对于arch)

1
2
3
4
arch-chroot /mnt 
grub-install /dev/nvme0n1
grub-mkconfig -o boot/grub/grub.cfg
reboot

解决方法1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
liupei@T470:~$ sudo parted /dev/nvme0n1 set 1 bios_grub on
信息: 你可能需要 /etc/fstab


liupei@T470:~$ sudo parted /dev/nvme0n1 print
型号:THNSF5512GPUK TOSHIBA (nvme)
磁盘 /dev/nvme0n1: 512GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:
编号 起始点 结束点 大小 文件系统 名称 标志
1 1049kB 107GB 107GB ext4 bios_grub
2 107GB 512GB 405GB ext4


liupei@T470:~$ sudo grub-install /dev/nvme0n1
正在为 i386-pc 平台进行安装。
安装完成。没有报告错误。

解决方法2

1
2
grub-install –force /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

此处参考来源(aapiiz)。重启,选择新盘作为启动盘,感觉不到是换了新盘,但是确实是换了盘

img系迁移后磁盘情况

1
2
3
4
5
6
7
8
liupei@T470:~$ lsblk 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 46.6G 0 part
└─sda2 8:2 0 72.7G 0 part
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 100G 0 part /
└─nvme0n1p2 259:2 0 377G 0 part /home

该方法非常灵活,推荐使用。参考文献:CSDN_544

增量备份

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
60
61
62
63
64
65
66
67
# 原有文件
a b c d test

# 首次备份
liupei@T470:~$ tar -cvzf zip test/
test/

# 增加文件 a, 第 1 次增量备份
liupei@T470:~$ mv a test/
liupei@T470:~$ tar -g note -cvzf zipa test/
tar: test:目录是新的
test/
test/a

# 增加文件 b, 第 2 次增量备份
liupei@T470:~$ mv b test/
liupei@T470:~$ tar -g note -cvzf zipb test/
test/
test/b

# 增加文件 c, 第 3 次增量备份
liupei@T470:~$ mv c test/
liupei@T470:~$ tar -g note -cvzf zipc test/
test/
test/c

# 增加文件 d, 第 4 次增量备份
liupei@T470:~$ mv d test/
liupei@T470:~$ tar -g note -cvzf zipd test/
test/
test/d

# 依次查看各增量压缩包中的内容
liupei@T470:~$ tar tvf zip
drwxrwxr-x liupei/liupei 0 2021-08-30 19:35 test/

liupei@T470:~$ tar tvf zipa
drwxrwxr-x liupei/liupei 4 2021-08-30 19:36 test/
-rw-rw-r-- liupei/liupei 380 2021-08-30 18:30 test/a

liupei@T470:~$ tar tvf zipb
drwxrwxr-x liupei/liupei 7 2021-08-30 19:36 test/
-rwxrwxr-x liupei/liupei 39128 2021-08-30 18:30 test/b

liupei@T470:~$ tar tvf zipc
drwxrwxr-x liupei/liupei 10 2021-08-30 19:36 test/
-rw-rw-r-- liupei/liupei 66 2021-08-30 18:36 test/c

liupei@T470:~$ tar tvf zipd
drwxrwxr-x liupei/liupei 13 2021-08-30 19:37 test/
-rwxrwxr-x liupei/liupei 16696 2021-08-30 18:40 test/d

liupei@T470:~$ ls test/
a b c d
liupei@T470:~$ rm -rf test/
liupei@T470:~$ ls
note zip zipa zipb zipc zipd

# 解压各压缩包还原文件夹
liupei@T470:~$ tar xzf zipa
liupei@T470:~$ tar xzf zipb
liupei@T470:~$ tar xzf zipc
liupei@T470:~$ tar xzf zipd
liupei@T470:~$ ls
note test zip zipa zipb zipc zipd
liupei@T470:~$ ls test/
a b c d

dd方法

直接在 root 模式下执行迁移:

1
2
# dd if=/dev/sda1 of=/dev/sdb1
root@lablinux:/# dd if=/dev/sda1 of=/dev/nvme0n1p1

这里要注意的是拷贝的源和目标分别是 /dev/sda1 和 /dev/sdb1 这两个分区,而不是 /dev/sda 和 /dev/sdb 这两个硬盘名称。

最后更新一下硬盘信息(不然显示的大小信息等还是旧硬盘的信息):

1
2
3
# umount /dev/sdb1         // 记得在操作之前先卸载所有挂载
# e2fsck -f /dev/sdb1
# resize2fs /dev/sdb1

参考文献:这里,该方法试过一次没成功。

ubuntu deja-dup

1
sudo apt purge deja-dup

手动备份可参考以下链接

  1. 参考文献
  2. 参考文献
  3. 参考文献

评论