问题需求
适用于将整个linux系统迁移到一块新的硬盘或新电脑上。
原 linux(ubunt20.04)安装在 128G 备用盘上,新硬盘 512G固态硬盘
原硬盘分区情况:
/ | 50G |
---|---|
/home | 78G |
1 | Disk /dev/sda:119.25 GiB,128035676160 字节,250069680 个扇区 |
新硬盘分区情况:
/ | 107G |
---|---|
/home | 405G |
1 | Disk /dev/nvme0n1:476.96 GiB,512110190592 字节,1000215216 个扇区 |
tar方法
对新盘分区
1 | sudo fdisk -l |
选择磁盘,删除原有分区,新建分区,格式化
备份系统
/ 分区备份
1 | sudo mount /dev/nvme0n1p1 /media/liupei/ |
推荐使用 pigz多线程提高迁移速度
1 | sudo apt install pigz |
/ 分区迁移
将系统解压到目标磁盘
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 | mkdir tmp |
配置文件修改
系统启动文件配置
把新硬盘的/boot/grub/grup.cfg里面的uuid替换掉
如果没有把boot单独分区,那么只要将里面的uuid全部改成新硬盘的uuid,(考虑启动过程没有其他挂载的情况)。如果是单独分区的话,注意这个文件下还有boot的uuid的值(我的硬盘没有boot单独分区)。
uuid查询方法:1. sudo blkid ; 2. ls -l /dev/disk/by-uuid
1 | sudo vim /boot/grub/grub.cfg |
分区挂载配置
修改 /etc/fstab 文件,把要启动自动挂载的分区都写上
1 | sudo vim /etc/fstab |
grub安装与更新
Ubuntu使用BIOS启动时, GPT分区表下安装grub2报错:
1 | iupei@T470:~$ sudo grub-install /dev/nvme0n1 |
解决方法0:(仅对于arch)
1 | arch-chroot /mnt |
解决方法1:
1 | liupei@T470:~$ sudo parted /dev/nvme0n1 set 1 bios_grub on |
解决方法2
1 | grub-install –force /dev/sda |
此处参考来源(aapiiz)。重启,选择新盘作为启动盘,感觉不到是换了新盘,但是确实是换了盘
系迁移后磁盘情况
1 | liupei@T470:~$ lsblk |
该方法非常灵活,推荐使用。参考文献:CSDN_544
增量备份
1 | # 原有文件 |
dd方法
直接在 root 模式下执行迁移:
1 | # dd if=/dev/sda1 of=/dev/sdb1 |
这里要注意的是拷贝的源和目标分别是 /dev/sda1 和 /dev/sdb1 这两个分区,而不是 /dev/sda 和 /dev/sdb 这两个硬盘名称。
最后更新一下硬盘信息(不然显示的大小信息等还是旧硬盘的信息):
1 | # umount /dev/sdb1 // 记得在操作之前先卸载所有挂载 |
参考文献:这里,该方法试过一次没成功。
ubuntu deja-dup
1 | sudo apt purge deja-dup |
手动备份可参考以下链接
- 本文作者: pei.liu
- 本文链接: http://liupei.ink/2021/06/07/linux-backup/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!