子卷及挂载目录
子卷 | 挂载目录 | 说明 |
---|---|---|
@root | / | 根目录 |
@home | /home | home目录 |
@snapshot | /.snapshot | 用于保存快照 |
/var/lib/portables
跟/var/lib/machines
这两个子卷是systemd自动创建的(不知道具体作用,有知道的大佬可以科普下)

创建快照
根目录子卷(@root)保存到/.snapshot/root_backup
home目录子卷(@home)保存到/.snapshot/home_backup
sudo btrfs subvolume snapshot -r / /.snapshot/root_backup
sudo btrfs subvolume snapshot -r /home /.snapshot/home_backup

删除系统文件(破坏系统)
root账号执行
rm -rf /home/*
rm -rf /bin/*
然后系统就无法正常使用了,重启后也无法正常进入系统。

恢复快照
接下来进入LiveCD进行快照的恢复,这里使用的archlinux的安装镜像。
先把btrfs分区(/dev/sda2)挂载到 /mnt 目录下
mount -t btrfs /dev/sda2 /mnt
然后进入/mnt目录,查看所有子卷列表。
cd /mnt
btrfs subvolume list ./
其中@snapshot/root_backup
跟@snapshot/home_backup
就是刚才创建的快照子卷。
先删除原@root
跟@home
这两个子卷
@root子卷下还有@root/var/lib/portables
和@root/var/lib/machines
这两个子卷,如果直接删除的话会提示子卷不为空,无法删除。

需要先删除@root/var/lib/portables
和@root/var/lib/machines
这两个子卷才可以。
btrfs subvolume delete @root/var/lib/portables
btrfs subvolume delete @root/var/lib/machines
btrfs subvolume delete @root
btrfs subvolume delete @home

然后就可以执行快照恢复,快照恢复跟创建子卷一样(快照也是一个子卷),把快照恢复到原来的位置就可以
@snapshot/root_backup 恢复到 @root
@snapshot/home_backup 恢复到 @home
btrfs subvolume snapshot @snapshot/root_backup @root
btrfs subvolume snapshot @snapshot/home_backup @home
然后修改 @root/etc/fstab文件,修改一下子卷对应的id,先查看子卷列表。
btrfs subvolume list ./

@root的id是263
@home的id是264
vim @root/etc/fstab
修改 /@root
跟 /@home
对应的subvolid

修改保存后重启电脑就可以了。
原创文章,作者:小哆啦,如若转载,请注明出处:https://www.notevm.com/a/6633.html