diff --git a/.gitignore b/.gitignore index f33e93b..2f2e78b 100644 --- a/.gitignore +++ b/.gitignore @@ -43,7 +43,8 @@ mongo-volume mongo-volume-backup-*.tar.gz # backups directory for mongo-volume tarballs -/backups/ +backups/ +mongo-backup/ # Serena AI assistant .serena/ diff --git a/README.md b/README.md index ebfda4b..9c38412 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The project includes multiple backup strategies for different deployment scenari - `db-backup--standalone.sh` - Creates offline backup of the complete mongo-volume directory - Database container is stopped during backup for consistency - Backs up the entire MongoDB data directory - - Output: `./backups/mongo-volume-backup-YYYY-MM-DD-HH-MM.tar.gz` + - Output: `./mongo-backup/mongo-volume-backup-YYYY-MM-DD-HH-MM.tar.gz` - Default retention: 7 backups (configurable via `KEEP` env var) - Usage: `./db-backup--standalone.sh` or `KEEP=2 ./db-backup--standalone.sh` @@ -50,7 +50,7 @@ The project includes multiple backup strategies for different deployment scenari - `db-backup--swarm.sh` - Creates offline backup by scaling down the MongoDB service - Service is scaled to 0 during backup - - Output: `./backups/mongo-volume-backup-YYYY-MM-DD-HH-MM.tar.gz` + - Output: `./mongo-backup/mongo-volume-backup-YYYY-MM-DD-HH-MM.tar.gz` - Usage: `./db-backup--swarm.sh` - `db-restore-from-backup--swarm.sh` - Restores volume backup by scaling down the service @@ -75,13 +75,13 @@ Backups run automatically via cron at 04:00 every day: - **Monday-Saturday**: Online database dumps without downtime (keeps 7 days of incremental backups) All backup operations are logged with timestamps: -- Volume backups: `./backups/db-backup-standalone.log` +- Volume backups: `./mongo-backup/db-backup-standalone.log` - Database dumps: `./mongo-backup/db-dump-db-standalone.log` - Restore operations: `./mongo-backup/db-restore-from-dump.log` ## Backup Directories -- `./backups/` - Volume backup archives (full mongo-volume directory) +- `./mongo-backup/` - Volume backup archives (full mongo-volume directory) - `./mongo-backup/` - Database dump archives (utility-bills database only) Both directories are excluded from git via `.gitignore`. diff --git a/db-backup--standalone.sh b/db-backup--standalone.sh index d395cf7..dab8368 100755 --- a/db-backup--standalone.sh +++ b/db-backup--standalone.sh @@ -21,9 +21,9 @@ set -euo pipefail # - Creates compressed tarball (.tar.gz) of the volume # # OUTPUT: -# - Backup files stored in: ./backups/ +# - Backup files stored in: ./mongo-backup/ # - Filename format: mongo-volume-backup-YYYY-MM-DD-HH-MM.tar.gz -# - Log file: ./backups/db-backup-standalone.log +# - Log file: ./mongo-backup/db-backup-standalone.log # - Automatic rotation: keeps newest 7 backups (configurable via KEEP env var) # # USAGE: @@ -37,8 +37,10 @@ set -euo pipefail # ============================================================================== # Configuration +BACKUP_DIR="${BACKUP_DIR:-$SCRIPT_DIR/mongo-backup}" + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -LOG_FILE="$SCRIPT_DIR/backups/db-backup-standalone.log" +LOG_FILE="$BACKUP_DIR/db-backup-standalone.log" MONGO_SERVICE="mongo" COMPOSE_FILE="$SCRIPT_DIR/docker-compose-standalone.yaml" @@ -60,7 +62,6 @@ docker compose -f "$COMPOSE_FILE" stop "$MONGO_SERVICE" TIMESTAMP=$(date +"%Y-%m-%d-%H-%M") # backup directory and retention (can be overridden via env) -BACKUP_DIR="${BACKUP_DIR:-$SCRIPT_DIR/backups}" KEEP="${KEEP:-7}" mkdir -p "$BACKUP_DIR" diff --git a/db-backup--swarm.sh b/db-backup--swarm.sh index 289600a..0e96b83 100755 --- a/db-backup--swarm.sh +++ b/db-backup--swarm.sh @@ -21,7 +21,7 @@ set -euo pipefail # - Creates compressed tarball (.tar.gz) of the volume # # OUTPUT: -# - Backup files stored in: ./backups/ +# - Backup files stored in: ./mongo-backup/ # - Filename format: mongo-volume-backup-YYYY-MM-DD-HH-MM.tar.gz # - Automatic rotation: keeps newest 7 backups (configurable via KEEP env var) # @@ -45,7 +45,7 @@ docker service scale "$MONGO_SERVICE"=0 TIMESTAMP=$(date +"%Y-%m-%d-%H-%M") # backup directory and retention (can be overridden via env) -BACKUP_DIR="${BACKUP_DIR:-backups}" +BACKUP_DIR="${BACKUP_DIR:-mongo-backup}" KEEP="${KEEP:-7}" mkdir -p "$BACKUP_DIR" diff --git a/db-restore-from-backup--swarm.sh b/db-restore-from-backup--swarm.sh index 8e00809..cf15152 100755 --- a/db-restore-from-backup--swarm.sh +++ b/db-restore-from-backup--swarm.sh @@ -22,7 +22,7 @@ set -euo pipefail # # INPUT: # - Requires backup filename as parameter -# - Looks for file in: ./backups/ +# - Looks for file in: ./mongo-backup/ # - Optional: --pre-backup flag to create safety backup before restore # # USAGE: @@ -72,10 +72,10 @@ if [ -z "${TIMESTAMP:-}" ]; then echo " --do-pre-backup=false Skip interactive prompt, no pre-restore backup" echo "" echo "Available backups:" - ls -1t backups/mongo-volume-backup-*.tar.gz 2>/dev/null | sed 's/.*mongo-volume-backup-\(.*\)\.tar\.gz/ \1/' || echo " No backups found" + ls -1t mongo-backup/mongo-volume-backup-*.tar.gz 2>/dev/null | sed 's/.*mongo-volume-backup-\(.*\)\.tar\.gz/ \1/' || echo " No backups found" exit 1 fi -BACKUP_DIR="${BACKUP_DIR:-backups}" +BACKUP_DIR="${BACKUP_DIR:-mongo-backup}" BACKUP_FILE="$BACKUP_DIR/mongo-volume-backup-$TIMESTAMP.tar.gz" # Check if backup file exists