如何在更新系统之前自动创建 Btrfs 快照?

Pro*_*700 5 updates scripts btrfs automation snapshot

我已经在 Btrfs 根分区上安装了 Ubuntu 20.04 以实现其快照功能。

为了尽可能简单,我想将 Btrfs 快照的创建集成到我的upgrade-alias 命令中,目前看起来像这样:

sudo apt update && sudo apt upgrade -y && sudo flatpak update -y && sudo snap refresh

我如何最好地在更新之前添加快照,以便在出现任何问题时回滚?

是否也有可能同时删除旧快照?(我的根分区填充不到 10%,所以我可以多次复制我的整个系统,但我想每周更新会很快填满?)

Pil*_*ot6 1

在 中制作快照非常容易btrfs

首先将包含文件系统的分区安装btrfs到例如/mnt。我们假设是/dev/sda1

sudo mount /dev/sda1 /mnt
cd /mnt
Run Code Online (Sandbox Code Playgroud)

如果您使用/at@/homeat进行标准 Ubuntu 安装@home,则运行时ls将显示两项:@@home

此外,如果您之前创建了快照,它们也会显示在那里。

/要创建和的快照/home,请运行以下命令:

sudo btrfs sub snap @ @-BACKUP && sudo btrfs sub snap @home @home-BACKUP
Run Code Online (Sandbox Code Playgroud)

如果您想在创建新备份之前删除现有备份,则命令将为:

sudo btrfs sub del @-BACKUP && sudo btrfs sub del @home-BACKUP
Run Code Online (Sandbox Code Playgroud)

就如此容易。

完成后,通过以下方式卸载分区/mnt

sudo umount /mnt
Run Code Online (Sandbox Code Playgroud)

另外我可以补充一点,您可以创建带有时间戳的快照或进行增量备份。但这有点超出了问题的范围。

您可以将这些命令合并到一个文本文件中,例如backup.sh.

例子:

#!/bin/sh
mount /dev/sda1 /mnt
cd /mnt
[ -d @-BACKUP ] && sudo btrfs sub del @-BACKUP #Checks is backup exists and deletes it
[ -d @home-BACKUP ] && sudo btrfs sub del @home-BACKUP
btrfs sub snap @ @-BACKUP
btrfs sub snap @home @home-BACKUP
cd /
umount /mnt
Run Code Online (Sandbox Code Playgroud)

该脚本应该与 一起运行sudo