deploy
This commit is contained in:
95
scripts/backup.sh
Executable file
95
scripts/backup.sh
Executable file
@@ -0,0 +1,95 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user