homelab/roles/any.tools.backup-scripts/templates/btrfs-subvolume.backup.sh.j2

12 lines
484 B
Django/Jinja

#!/usr/bin/env bash
data_dir='{{ item.path }}'
snapshot_dir="${data_dir}.snapshot"
# Read-only snapshot for atomic backup
otel-cli exec --name "btrfs subvolume snapshot" -- btrfs subvolume snapshot -r "$data_dir" "$snapshot_dir" || exit $?
otel-cli exec --name "restic backup directory" -- /usr/local/bin/restic backup "$snapshot_dir"
# Always remove snapshot subvolume, even if restic fails
otel-cli exec --name "btrfs subvolume delete" -- btrfs subvolume delete "$snapshot_dir"