OpenSuse 文档说这个关于/usr/local
:
“手动安装软件时会用到此目录。排除此目录是为了避免在回滚时卸载这些安装。”
但是我想对其进行快照,以便当我回滚 zypper 安装(特别是 cuda)时可以轻松地将其回滚。
我尝试添加 snapper 配置/usr/local
但出现以下错误:
$ sudo snapper list-configs
Config | Subvolume
-------+----------
root | /
$ sudo snapper create-config /usr/local
Creating config failed (config already exists).
这是我当前的根配置,其中没有提及任何内容/usr/local
。
$ sudo cat /etc/snapper/configs/root
# subvolume to snapshot
SUBVOLUME="/"
# filesystem type
FSTYPE="btrfs"
# btrfs qgroup for space aware cleanup algorithms
QGROUP="1/0"
# fraction or absolute size of the filesystems space the snapshots may use
SPACE_LIMIT="0.5"
# fraction or absolute size of the filesystems space that should be free
FREE_LIMIT="0.2"
# users and groups allowed to work with config
ALLOW_USERS=""
ALLOW_GROUPS=""
# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots
# directory
SYNC_ACL="no"
# start comparing pre- and post-snapshot in background after creating
# post-snapshot
BACKGROUND_COMPARISON="yes"
# run daily number cleanup
NUMBER_CLEANUP="yes"
# limit for number cleanup
NUMBER_MIN_AGE="1800"
NUMBER_LIMIT="2-10"
NUMBER_LIMIT_IMPORTANT="4-10"
# create hourly snapshots
TIMELINE_CREATE="no"
# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"
# limits for timeline cleanup
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"
# cleanup empty pre-post-pairs
EMPTY_PRE_POST_CLEANUP="yes"
# limits for empty pre-post-pair cleanup
EMPTY_PRE_POST_MIN_AGE="1800"
答案1
默认情况下/usr/local
不会被添加到 snapper(自动快照机制)。
我建议手动创建快照,这真的不是那么难。
btrfs subvolume snapshot -r /usr/local /usr/local.read-only-snapshot-01
...创建一个只读快照local
并将其命名为local.read-only-snapshot-01
。
重要的是,BTRFS 子卷可以通过不同的方式创建/挂载,通常 openSUSE 会在名为 的超级子卷中创建所有子卷,@
然后使用/etc/fstab
挂载不同的子卷。另一种方法是使用 命令在子卷所属的位置直接创建子卷btrfs subvolume create
。
为了能够直接访问超级子卷,您需要使用其子卷 ID(始终为)挂载 BTRFS-ROOT 子卷5
。
mount -t btrfs -o subvolid=5 /dev/BTRFS_DEVICE /mnt/
当您想要恢复到以前的快照时,您可以通过以下方式实现:
btrfs subvolume delete /usr/local
btrfs property set -ts /usr/local.read-only-snapshot-01 ro false
mv /usr/local.read-only-snapshot-01 /usr/local
请注意,这种方法可能会与您的设置相冲突/etc/fstab
(这取决于您的 BTRFS 如何设置),一个简单的解决方法就是删除属于/usr/local/
您的条目fstab
。