#!/bin/bash # Backup script for CMDB cache database # Run daily via cron: 0 2 * * * /path/to/backup-database.sh BACKUP_DIR="${BACKUP_DIR:-./backups}" DATE=$(date +%Y%m%d_%H%M%S) CONTAINER_NAME="${CONTAINER_NAME:-cmdb-insight-backend-1}" # Create backup directory if it doesn't exist mkdir -p "$BACKUP_DIR" # Backup SQLite database echo "Backing up CMDB cache database..." docker exec "$CONTAINER_NAME" sqlite3 /app/data/cmdb-cache.db ".backup '/tmp/cmdb-cache-$DATE.db'" docker cp "$CONTAINER_NAME:/tmp/cmdb-cache-$DATE.db" "$BACKUP_DIR/cmdb-cache-$DATE.db" docker exec "$CONTAINER_NAME" rm "/tmp/cmdb-cache-$DATE.db" # Compress backup echo "Compressing backup..." gzip "$BACKUP_DIR/cmdb-cache-$DATE.db" # Cleanup old backups (keep last 30 days) echo "Cleaning up old backups..." find "$BACKUP_DIR" -name "cmdb-cache-*.db.gz" -mtime +30 -delete echo "Backup completed: $BACKUP_DIR/cmdb-cache-$DATE.db.gz"