backup.sh 629 B

1234567891011121314151617181920
  1. #!/bin/sh
  2. set -eu
  3. BACKUP_DIR="/backups"
  4. RETENTION_DAYS=7
  5. TIMESTAMP=$(date +%Y%m%d_%H%M%S)
  6. BACKUP_FILE="${BACKUP_DIR}/moviedice_${TIMESTAMP}.sql.gz"
  7. echo "[$(date -Iseconds)] Starting database backup"
  8. pg_dump -h supabase-db -U "$POSTGRES_USER" -d "$POSTGRES_DB" \
  9. | gzip > "${BACKUP_FILE}"
  10. echo "[$(date -Iseconds)] Backup saved to ${BACKUP_FILE}"
  11. # Remove backups older than retention period
  12. find "${BACKUP_DIR}" -name "moviedice_*.sql.gz" -mtime +${RETENTION_DAYS} -delete
  13. REMAINING=$(find "${BACKUP_DIR}" -name "moviedice_*.sql.gz" | wc -l)
  14. echo "[$(date -Iseconds)] Cleanup complete. ${REMAINING} backup(s) retained."