#!/bin/bash # MongoDB Backup Script # ===================== set -e # Colors GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # Configuration BACKUP_DIR="/Users/jungwoochoi/Desktop/prototype/site11/backups" TIMESTAMP=$(date +%Y%m%d_%H%M%S) BACKUP_NAME="backup_$TIMESTAMP" CONTAINER_NAME="site11_mongodb" echo -e "${GREEN}MongoDB Backup Script${NC}" echo "========================" echo "" # Create backup directory if it doesn't exist mkdir -p "$BACKUP_DIR" # Step 1: Create dump inside container echo "1. Creating MongoDB dump..." docker exec $CONTAINER_NAME mongodump --out /data/db/$BACKUP_NAME 2>/dev/null || { echo -e "${YELLOW}Warning: Some collections might be empty${NC}" } # Step 2: Copy backup to host echo "2. Copying backup to host..." docker cp $CONTAINER_NAME:/data/db/$BACKUP_NAME "$BACKUP_DIR/" # Step 3: Compress backup echo "3. Compressing backup..." cd "$BACKUP_DIR" tar -czf "$BACKUP_NAME.tar.gz" "$BACKUP_NAME" rm -rf "$BACKUP_NAME" # Step 4: Clean up old backups (keep only last 5) echo "4. Cleaning up old backups..." ls -t *.tar.gz 2>/dev/null | tail -n +6 | xargs rm -f 2>/dev/null || true # Step 5: Show backup info SIZE=$(ls -lh "$BACKUP_NAME.tar.gz" | awk '{print $5}') echo "" echo -e "${GREEN}✅ Backup completed successfully!${NC}" echo " File: $BACKUP_DIR/$BACKUP_NAME.tar.gz" echo " Size: $SIZE" echo "" # Optional: Clean up container backups older than 7 days docker exec $CONTAINER_NAME find /data/db -name "backup_*" -type d -mtime +7 -exec rm -rf {} + 2>/dev/null || true echo "To restore this backup, use:" echo " tar -xzf $BACKUP_NAME.tar.gz" echo " docker cp $BACKUP_NAME $CONTAINER_NAME:/data/db/" echo " docker exec $CONTAINER_NAME mongorestore /data/db/$BACKUP_NAME"