问题需求
适用于将整个linux系统迁移到一块新的硬盘或新电脑上。
原 linux(ubunt20.04)安装在 128G 备用盘上,新硬盘 512G固态硬盘
原硬盘分区情况:
/ | 50G |
---|---|
/home | 78G |
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 |
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方法
对新盘分区
sudo fdisk -l
sudo fdisk /dev/nvme0n1
sudo mkfs.ext4 /dev/nvme0n1p1
sudo mkfs.ext4 /dev/nvme0n1p2
选择磁盘,删除原有分区,新建分区,格式化
备份系统
/ 分区备份
sudo mount /dev/nvme0n1p1 /media/liupei/
推荐使用 pigz多线程提高迁移速度
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 /
/ 分区迁移
将系统解压到目标磁盘
sudo tar --use-compress-program=pigz -xvpf u20.tgz -C /media/liupei/
重建exclude的目录
sudo mkdir cdrom home lost+found media mnt proc run tmp
/home 分区备份与迁移
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
sudo vim /boot/grub/grub.cfg
%s /uuid_old/uuid_new/g
分区挂载配置
修改 /etc/fstab 文件,把要启动自动挂载的分区都写上
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报错:
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)
arch-chroot /mnt
grub-install /dev/nvme0n1
grub-mkconfig -o boot/grub/grub.cfg
reboot
解决方法1:
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
grub-install –force /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
此处参考来源(aapiiz)。重启,选择新盘作为启动盘,感觉不到是换了新盘,但是确实是换了盘
系迁移后磁盘情况
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
增量备份
# 原有文件
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 模式下执行迁移:
# dd if=/dev/sda1 of=/dev/sdb1
root@lablinux:/# dd if=/dev/sda1 of=/dev/nvme0n1p1
这里要注意的是拷贝的源和目标分别是 /dev/sda1 和 /dev/sdb1 这两个分区,而不是 /dev/sda 和 /dev/sdb 这两个硬盘名称。
最后更新一下硬盘信息(不然显示的大小信息等还是旧硬盘的信息):
# umount /dev/sdb1 // 记得在操作之前先卸载所有挂载
# e2fsck -f /dev/sdb1
# resize2fs /dev/sdb1
参考文献:这里,该方法试过一次没成功。
ubuntu deja-dup
sudo apt purge deja-dup
手动备份可参考以下链接