Yabsnap 是一個為 Arch 編寫的、用於 Btrfs 分區的定時快照管理器。
安裝
安裝 yabsnapAUR 軟體包,開發版本可以通過 yabsnap-gitAUR 安裝。
配置
運行以下命令將會創建一個配置文件:
# yabsnap create-config configname
此命令會在 /etc/yabsnap/configs/configname.conf
生成配置文件。編輯該文件,修改以下內容:
-
source
- 子卷掛載點。例如/home
。 -
dest_prefix
- 快照名稱的完整路徑及前綴。例如,/.snapshot/@home-
會創建如下格式的備份快照:/.snapshot/@home-20230525120000
。
您還可以編輯其他參數,以指定何時觸發或清理備份。
主要命令
查看快照
要查看現有的快照,執行:
$ yabsnap list
創建快照
要為所有已有配置創建快照,執行:
# yabsnap create --comment 'COMMENT'
您也可以單獨地為已掛載子卷創建快照, Yabsnap 會自動地找到相應的配置。執行:
# yabsnap --source '/home' create --comment 'COMMENT'
清理或刪除快照
自動清理
根據 /etc/yabsnap/configs/*.conf
中的配置,Yabsnap 會自動刪除超出上限的舊快照。
刪除快照
也可以手動刪除快照。
指定完整路徑以刪除特定的快照:
# yabsnap delete /.snapshots/@home-20230525120000
指定時間戳可刪除所有匹配的同時拍攝的快照:
# yabsnap delete 20230525120000
回滾
回滾注意事項:使用 subvol 而不是 subvolid 掛載
建議使用 subvol 而不是 subvolid 來掛載所有的 btrfs 子卷。
例如使用下列 fstab 條目:
UUID=[YOUR_UUID] / btrfs rw,noatime,ssd,space_cache=v2,compress=zstd,subvol=/@ 0 0
注意:使用的掛載選項是
subvol=/@
。不要 使用 subvolid=
。這樣做的原因是該回滾機制不會修改您的 fstab 文件,它只會確保正確的快照掛載在相應的位置。(如果使用subvolid
,那麼會掛載原來的子卷)
回滾操作
回滾命令是安全的(因為並未執行任何修改操作),直到執行其生成的腳本。
此命令將生成一個回滾腳本,請將時間戳更改為現有的某個快照:
$ yabsnap rollback-gen 20230525081049 | tee ~/rollback.sh
只有運行該腳本才會執行真正的回滾操作。因此建議在回滾之前先檢查生成的命令。
檢查完生成的回滾腳本後,將其設為可執行,然後運行:
# ~/rollback.sh
此操作將回滾前述指定時間戳的所有快照。
與 Snapper 的比較
Yabsnap 是為了克服 Snapper 的某些不足而創立。具體而言,它可以做一些 Snapper 難以或無法完成的任務(截至撰寫本文時):
- 自定義備份目的路徑 (issue),
- 對所有已配置的快照進行回滾(而不僅僅是默認子卷)
- 集成了 pacman hook 支持。