Files
nix-config/modules/nixos/base/btrbk.nix
2024-03-31 23:06:53 +08:00

40 lines
1.3 KiB
Nix

{
# ==================================================================
#
# Tool for creating snapshots and remote backups of btrfs subvolumes
# https://github.com/digint/btrbk
#
# Usage:
# 1. btrbk will create snapshots on schedule
# 2. we can use `btrbk run` command to create a backup manually
#
# How to restore a snapshot:
# 1. Find the snapshot you want to restore in /snapshots
# 2. Use `btrfs subvol delete /btr_pool/@persistent` to delete the current subvolume
# 3. Use `btrfs subvol snapshot /snapshots/2021-01-01 /btr_pool/@persistent` to restore the snapshot
# 4. reboot the system or remount the filesystem to see the changes
#
# ==================================================================
services.btrbk.instances.btrbk = {
# How often this btrbk instance is started. See systemd.time(7) for more information about the format.
onCalendar = "daily";
settings = {
# keep daily snapshots for 14 days
snapshot_preserve = "14d";
# keep all snapshots for 2 days, no matter how frequently you (or your cron job) run btrbk
snapshot_preserve_min = "2d";
volume = {
"/btr_pool" = {
subvolume = {
"@persistent" = {
snapshot_create = "always";
};
};
target = "/snapshots";
};
};
};
};
}