Add monthly MongoDB backup script

This commit is contained in:
Adolfo Reyna
2026-05-29 00:45:49 +00:00
parent c257fd1ec7
commit 44988dfda2
2 changed files with 44 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env bash
set -euo pipefail
APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BACKUP_ROOT="${BACKUP_ROOT:-$APP_DIR/backups}"
DB_NAME="${DB_NAME:-EMI_SOCIAL}"
MONGO_IMAGE="${MONGO_BACKUP_IMAGE:-mongo:7}"
KEEP_ARCHIVES="${KEEP_ARCHIVES:-12}"
timestamp="$(date -u +%Y%m%dT%H%M%SZ)"
dump_name="emi_social_${timestamp}"
archive_path="$BACKUP_ROOT/${dump_name}.tar.gz"
mkdir -p "$BACKUP_ROOT"
docker run --rm \
--user "$(id -u):$(id -g)" \
--env-file "$APP_DIR/.env" \
-e DB_NAME="$DB_NAME" \
-e DUMP_NAME="$dump_name" \
-v "$BACKUP_ROOT:/backup" \
"$MONGO_IMAGE" \
bash -lc '
set -euo pipefail
: "${MONGO_URL:?MONGO_URL is missing}"
uri="$MONGO_URL"
uri="${uri/\/myFirstDatabase?/\/${DB_NAME}?}"
uri="${uri/\/myFirstDatabase$/\/${DB_NAME}}"
mongodump --uri "$uri" --db "$DB_NAME" --out "/backup/$DUMP_NAME"
'
tar -czf "$archive_path" -C "$BACKUP_ROOT" "$dump_name"
rm -rf "$BACKUP_ROOT/$dump_name"
find "$BACKUP_ROOT" -maxdepth 1 -name 'emi_social_*.tar.gz' -type f \
-printf '%T@ %p\n' \
| sort -rn \
| awk -v keep="$KEEP_ARCHIVES" 'NR > keep { print $2 }' \
| xargs -r rm -f
echo "Created MongoDB backup: $archive_path"