Files
boc/iom/scripts/backup_auto.sh
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

104 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
set -e
# Automated backup script
# Runs via cron: 0 2 * * * /path/to/scripts/backup_auto.sh
BACKUP_DIR="/backups/iom"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=30
# Load environment
source /home/bernt/.openclaw/workspace/iom/.env
echo "=== IOM Automated Backup ==="
echo "Timestamp: $TIMESTAMP"
# Create backup directory
mkdir -p $BACKUP_DIR
# 1. Database backup
echo "[1/4] Backing up PostgreSQL..."
pg_dump -h localhost -U iom -d iom -F custom -f "$BACKUP_DIR/iom_db_$TIMESTAMP.dump"
if [ $? -eq 0 ]; then
echo "✓ Database backup complete"
else
echo "✗ Database backup failed"
exit 1
fi
# 2. Redis backup
echo "[2/4] Backing up Redis..."
redis-cli BGSAVE
sleep 5
cp /var/lib/redis/dump.rdb "$BACKUP_DIR/redis_$TIMESTAMP.rdb"
if [ $? -eq 0 ]; then
echo "✓ Redis backup complete"
else
echo "✗ Redis backup failed"
fi
# 3. MinIO backup
echo "[3/4] Backing up MinIO..."
mc mirror iom/iom-images "$BACKUP_DIR/minio_images_$TIMESTAMP"
if [ $? -eq 0 ]; then
echo "✓ MinIO backup complete"
else
echo "✗ MinIO backup failed"
fi
# 4. Configuration backup
echo "[4/4] Backing up configuration..."
tar -czf "$BACKUP_DIR/config_$TIMESTAMP.tar.gz" \
/home/bernt/.openclaw/workspace/iom/.env \
/home/bernt/.openclaw/workspace/iom/docker-compose.yml \
/home/bernt/.openclaw/workspace/iom/nginx/
if [ $? -eq 0 ]; then
echo "✓ Configuration backup complete"
else
echo "✗ Configuration backup failed"
fi
# Compress database backup
gzip "$BACKUP_DIR/iom_db_$TIMESTAMP.dump"
# Encrypt backups (optional)
if command -v gpg &> /dev/null; then
echo "Encrypting backups..."
gpg --symmetric --cipher-algo AES256 "$BACKUP_DIR/iom_db_$TIMESTAMP.dump.gz"
rm "$BACKUP_DIR/iom_db_$TIMESTAMP.dump.gz"
fi
# Upload to remote storage (optional)
if [ -n "$S3_BACKUP_BUCKET" ]; then
echo "Uploading to S3..."
aws s3 sync $BACKUP_DIR s3://$S3_BACKUP_BUCKET/iom/backups/
fi
# Clean old backups
echo "Cleaning old backups (>$RETENTION_DAYS days)..."
find $BACKUP_DIR -name "*.dump*" -mtime +$RETENTION_DAYS -delete
find $BACKUP_DIR -name "*.rdb" -mtime +$RETENTION_DAYS -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
# Verify backup
echo "Verifying backup..."
LATEST_BACKUP=$(ls -t $BACKUP_DIR/iom_db_*.dump* | head -1)
if [ -f "$LATEST_BACKUP" ]; then
echo "✓ Backup verified: $LATEST_BACKUP"
SIZE=$(du -h "$LATEST_BACKUP" | cut -f1)
echo " Size: $SIZE"
else
echo "✗ Backup verification failed"
exit 1
fi
# Send notification (optional)
if [ -n "$BACKUP_NOTIFICATION_EMAIL" ]; then
echo "Backup completed successfully" | mail -s "IOM Backup - $TIMESTAMP" $BACKUP_NOTIFICATION_EMAIL
fi
echo "=== Backup Complete ==="
echo "Backup: $LATEST_BACKUP"
echo "Retention: $RETENTION_DAYS days"