/home/techb158/cosmic-risk.abdallabala.com/scripts
Edit: /home/techb158/cosmic-risk.abdallabala.com/scripts/backup-db.sh (1103B)
#!/usr/bin/env bash
# COSMIC AI-Risk — Database Backup Script
# Usage: ./scripts/backup-db.sh [output-dir]
# Scheduled via cron or systemd timer
set -euo pipefail
OUTPUT_DIR="${1:-./backups}"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
FILENAME="cosmic_backup_${TIMESTAMP}.sql.gz"
mkdir -p "$OUTPUT_DIR"
# Local Docker
if docker compose ps -q postgres 2>/dev/null | grep -q .; then
docker compose exec -T postgres pg_dump -U cosmic -d cosmic_saas | gzip > "${OUTPUT_DIR}/${FILENAME}"
# Production Docker
elif docker compose -f docker-compose.prod.yml ps -q postgres 2>/dev/null | grep -q .; then
docker compose -f docker-compose.prod.yml exec -T postgres pg_dump -U cosmic -d cosmic_saas | gzip > "${OUTPUT_DIR}/${FILENAME}"
else
echo "ERROR: No running postgres container found"
exit 1
fi
echo "Backup saved: ${OUTPUT_DIR}/${FILENAME} ($(du -h "${OUTPUT_DIR}/${FILENAME}" | cut -f1))"
# Keep only last 30 backups
ls -t "${OUTPUT_DIR}"/cosmic_backup_*.sql.gz 2>/dev/null | tail -n +31 | xargs -r rm
echo "Done. $(ls -1 "${OUTPUT_DIR}"/cosmic_backup_*.sql.gz 2>/dev/null | wc -l) backups retained."