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%,所以我可以多次复制我的整个系统,但我想每周更新会很快填满?)
在 中制作快照非常容易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。