有幸帮一位学长进行arch系桌面系统的迁移,期间遇到一些坑,在这里记录一下
备份方式
备注:备份时不需要备份proc,run,tmp,sys下的内容,这些目录下都是是临时文件,如果备份不仅没用而且可能导致备份进程卡住
有以下几种方案
dd
是最简单最粗暴的备份方式,直接按字节把系统拷贝,拷贝内容包括,但是应当注意这种方式适合于相同大小硬盘迁移或者全盘备份恢复,虽然也可以拷到更大的盘上,但是可能会出现文件系统上的问题。这次是把500G盘上的系统换到1T,为了避免不必要的麻烦,故不采用这种方法。
sync,rsync,cp
1 | cp -avx |
timeshift,再生龙等
此类工具一般比较无脑,对照着提示做就行
btrfs子分区
(虽然我也不知道这有什么好处,但是既然学长要那我就给他搞一个吧)
按照我的理解,btrfs文件系统使用了一种特殊的分区方式,让根分区下可以建立相对独立的子分区,并且这些子分区可以直接挂载,当挂载根分区是子分区会以文件夹的形式展示。
新建子分区
直接mount已经初始化过的btrfs分区,然后创建子分区,这里创建一个根目录分区@,一个家目录分区@home。
1 | mount /dev/sdX /mnt |
挂载子分区
这里需要直接挂载子分区
1 | mount -t btrfs -o defaults,noatime,subvol=/@ /dev/sdX /mnt/ |
-o 后可以选择使用压缩格式,ssd优化等选项,可以按需要添加
复制系统
(注意,挂载EFI分区和开启swap)
此时可以直接通过cp或sync直接将系统恢复,也可以用先安装基础系统然后用备份工具恢复。复制完成后最好mkinitcpio一下,以防boot分区下面没有基本系统镜像。
重建引导
注意原来的grub设置是否有swap分区等相关设置,将其去掉或者改掉
1 | grub-install --efi-directory=/boot |
重建fstab
用archlinux安装脚本中的genfstab
1 | genfstab -U >> /etc/fstab |
在生成完毕后最好检查一下文件是否正确。