96 lines
2.3 KiB
Bash
Executable File
96 lines
2.3 KiB
Bash
Executable File
#!/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"
|