Files
2026-02-25 12:40:10 +05:30

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"