起因
Btrfs Snapper 是按照 /
进行备份的,总是会将用户目录下的 Steam 游戏上百个 G 全部备份。
检索了一些方法,Btrfs 是按照卷颗粒度进行备份的,故而无法略过文件。
只能将 /home/
作为一个独立子卷,而在配置 Snapper config 时,不指定该子卷,则达到了排除的效果。
# subvolume to snapshot
SUBVVOLUME="/"
过程
新建子卷
创建一个名为 @home
的子卷
sudo btrfs subvolume create /@home
迁移数据
因为只是 /home
目录,一般情况下不必到 LiveCD 环境下进行操作,直接迁移数据即可。
sudo cp -a /home/* /@home
修改 fstab
先查看子卷的参数,注意记录下来 subvol
和 subvolid
sudo btrfs subvolume list /
输出如下
ID 2714 gen 350042 top level 258 path .snapshots/1991/snapshot
ID 2715 gen 350159 top level 258 path .snapshots/1992/snapshot
ID 2716 gen 350298 top level 5 path @home
注意上面的 @home
,对应的 ID 为 2716
然后编辑 /etc/fstab
,原来挂载 Btrfs 的根目录类似于
UUID=3ccf9bca-025c-4398-991a-c7b151f3675b / btrfs rw,compress-force=zstd,relatime,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/ 0 0
复制该行,根据上面查到的 subvol
和 subvolid
修改
UUID=3ccf9bca-025c-4398-991a-c7b151f3675b /home btrfs rw,compress-force=zstd,relatime,ssd,discard=async,space_cache=v2,subvolid=2716,subvol=@home 0 0
一开始笔者仅修改了 subvol
,导致挂载不上 /home
验证
能正常开机就说明正常挂载了。