如何在 OpenSUSE 中获取“/usr/local”的快照?

如何在 OpenSUSE 中获取“/usr/local”的快照?

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

相关内容