#!/usr/bin/env sh set -eu container="${1:?Usage: backup.sh CONTAINER OUTPUT_FILE}" output="${2:?OUTPUT_FILE required}" [ ! -e "$output" ] || { echo 'Output already exists' >&2; exit 1; } temporary="/tmp/evofw-backup-$(date +%s)-$$.db" cleanup() { docker exec "$container" rm -f "$temporary" >/dev/null 2>&1 || true; } trap cleanup EXIT HUP INT TERM docker exec "$container" sh -ec 'node tools/sqlite-backup.mjs backup "${DATABASE_URL#sqlite:}" "$1"' sh "$temporary" docker cp "$container:$temporary" "$output.partial" mv "$output.partial" "$output"