有幸帮一位学长进行arch系桌面系统的迁移,期间遇到一些坑,在这里记录一下

备份方式

备注:备份时不需要备份proc,run,tmp,sys下的内容,这些目录下都是是临时文件,如果备份不仅没用而且可能导致备份进程卡住
有以下几种方案

dd

是最简单最粗暴的备份方式,直接按字节把系统拷贝,拷贝内容包括,但是应当注意这种方式适合于相同大小硬盘迁移或者全盘备份恢复,虽然也可以拷到更大的盘上,但是可能会出现文件系统上的问题。这次是把500G盘上的系统换到1T,为了避免不必要的麻烦,故不采用这种方法。

sync,rsync,cp

1
2
cp -avx 
rsync

timeshift,再生龙等

此类工具一般比较无脑,对照着提示做就行

btrfs子分区

(虽然我也不知道这有什么好处,但是既然学长要那我就给他搞一个吧)

按照我的理解,btrfs文件系统使用了一种特殊的分区方式,让根分区下可以建立相对独立的子分区,并且这些子分区可以直接挂载,当挂载根分区是子分区会以文件夹的形式展示。

新建子分区

直接mount已经初始化过的btrfs分区,然后创建子分区,这里创建一个根目录分区@,一个家目录分区@home。

1
2
3
4
mount /dev/sdX /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
umount /mnt

挂载子分区

这里需要直接挂载子分区

1
2
3
mount -t btrfs -o defaults,noatime,subvol=/@ /dev/sdX /mnt/
mkdir /mnt/home
mount -t btrfs -o defaults,noatime,subvol=/@home /dev/sdX /mnt/home

-o 后可以选择使用压缩格式,ssd优化等选项,可以按需要添加

复制系统

(注意,挂载EFI分区和开启swap)
此时可以直接通过cp或sync直接将系统恢复,也可以用先安装基础系统然后用备份工具恢复。复制完成后最好mkinitcpio一下,以防boot分区下面没有基本系统镜像。

重建引导

注意原来的grub设置是否有swap分区等相关设置,将其去掉或者改掉

1
2
grub-install --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg

重建fstab

用archlinux安装脚本中的genfstab

1
genfstab -U >> /etc/fstab

在生成完毕后最好检查一下文件是否正确。