btrfs snapshots and backups with btrbk

the readme is a good place to start with btrbk

automatic snapshots

keeping many snapshots around just in case. i'll manually delete large swaths of them when i need to create free space and i'm feeling particularity confident about my recent deletions.

executing every 5 minutes with cron:

$ crontab -l
*/5 * * * * btrbk -c /etc/btrbk/btrbk.conf run

desktop configuration:

$ more /etc/btrbk/btrbk.conf
timestamp_format        long-iso

volume /
  snapshot_dir /.snapshots
  subvolume /
    snapshot_name   root
    snapshot_preserve_min   2h
    snapshot_preserve       48h 14d 52w 48m

that last line controls which snapshots are kept: a snapshot each hour for the last 48 hours, every day for the last 14 days, every week for the last 52 weeks, and every month for the last 48 months.

snapshot_preserve_min above it controls the minimum amount of time snapshots are preserved for, so for 2 hours every one of our 5 minute snapshots is retained. afterwards, they're subject to the snapshot_preserve.

$ cd /.snapshots 
$ ls -1r | head -n 5
root.20251205T190000-0800
root.20251205T185500-0800
root.20251205T185000-0800
root.20251205T184500-0800
root.20251205T184000-0800
$ ls -1r | head -n 45 | tail -n 5
root.20251205T010000-0800
root.20251205T000000-0800
root.20251204T230000-0800
root.20251204T220000-0800
root.20251204T210000-0800
$ ls -1r | head -n 200 | tail -n 5
home.20251026T000000-0700
home.20251019T000000-0700
home.20251012T000000-0700
home.20251005T000000-0700
home.20251001T000000-0700

each directory listed contains my entire root at that moment.