#!/usr/bin/env bash # backup-cron.sh — intended to be run by cron on the production host. # Example crontab entry (daily at 03:00 UTC): # 0 3 * * * /opt/colectivo/infra/scripts/backup-cron.sh >> /var/log/colectivo-backup.log 2>&1 set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" LOG_PREFIX="[$(date -u +"%Y-%m-%dT%H:%M:%SZ")] backup-cron:" # Load env vars from the production .env if [ -f "$SCRIPT_DIR/../../.env" ]; then # shellcheck disable=SC1091 set -a; source "$SCRIPT_DIR/../../.env"; set +a fi echo "$LOG_PREFIX Starting scheduled backup" "$SCRIPT_DIR/backup.sh" supabase echo "$LOG_PREFIX PostgreSQL backup done" "$SCRIPT_DIR/backup.sh" keycloak echo "$LOG_PREFIX Keycloak backup done" # Prune local temp files older than 1 day find /tmp/colectivo-backups -type f -mtime +1 -delete 2>/dev/null || true echo "$LOG_PREFIX All done"