#!/usr/bin/env bash
set -euo pipefail
REPO_DIR="/opt/gluecron"
BACKUP_DIR="$REPO_DIR/backups"
RETAIN_DAYS=14
COMPOSE="docker compose -f docker-compose.standalone.yml"
cd "$REPO_DIR"
mkdir -p "$BACKUP_DIR"
ts=$(date +%Y%m%d-%H%M%S)
out="$BACKUP_DIR/gluecron-$ts.sql.gz"
$COMPOSE exec -T postgres pg_dump -U gluecron gluecron | gzip > "$out"
find "$BACKUP_DIR" -name 'gluecron-*.sql.gz' -mtime +$RETAIN_DAYS -delete
if [ -n "${BACKUP_RCLONE_REMOTE:-}" ] && command -v rclone >/dev/null 2>&1; then
rclone copy "$out" "$BACKUP_RCLONE_REMOTE" || echo "WARN: offsite copy failed"
fi
if [ -n "${HEALTHCHECK_PING_URL:-}" ]; then
curl -fsS -m 10 "$HEALTHCHECK_PING_URL" >/dev/null 2>&1 || true
fi
echo "$(date -Is) backup written: $out ($(du -h "$out" | cut -f1))"
|