#!/bin/bash # Backup script for Observation App # This script creates backups of database and images set -e echo "💾 Creating backup of Observation App data..." # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' print_status() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } # Create backup directory with timestamp BACKUP_DIR="backups/$(date +%Y%m%d_%H%M%S)" mkdir -p "$BACKUP_DIR" print_status "Backup directory: $BACKUP_DIR" # Backup database print_status "Backing up MongoDB database..." docker-compose exec -T observation_db mongodump --uri="mongodb://admin:password123@localhost:27017/beanstalk?authSource=admin" --archive > "$BACKUP_DIR/mongodb_backup.archive" # Backup images from public/observations if [ -d "public/observations" ]; then print_status "Backing up images..." cp -r public/observations "$BACKUP_DIR/" print_success "Images backed up" else print_warning "No images directory found" fi # Backup configuration files print_status "Backing up configuration..." cp .env "$BACKUP_DIR/" 2>/dev/null || print_warning "No .env file found" cp docker-compose.yml "$BACKUP_DIR/" 2>/dev/null || true # Create restore script cat > "$BACKUP_DIR/restore.sh" << 'EOF' #!/bin/bash # Restore script for Observation App backup set -e echo "🔄 Restoring Observation App from backup..." # Colors for output GREEN='\033[0;32m' BLUE='\033[0;34m' NC='\033[0m' print_status() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } # Check if containers are running if ! docker-compose ps | grep -q "Up"; then echo "Please start the application first: docker-compose up -d" exit 1 fi # Restore database print_status "Restoring database..." docker-compose exec -T observation_db mongorestore --uri="mongodb://admin:password123@localhost:27017/beanstalk?authSource=admin" --archive < mongodb_backup.archive # Restore images if [ -d "observations" ]; then print_status "Restoring images..." cp -r observations/* public/observations/ print_success "Images restored" fi print_success "Restore completed!" EOF chmod +x "$BACKUP_DIR/restore.sh" print_success "Backup completed successfully!" echo "Backup location: $BACKUP_DIR" echo "To restore: cd $BACKUP_DIR && ./restore.sh"