Files
assistant/scripts/backup-production.sh

96 lines
2.5 KiB
Bash
Raw Normal View History

#!/bin/bash
# B2B Shopping AI Assistant - Production Backup Script
# 生产环境备份脚本
set -e
# 配置
BACKUP_DIR="./backups"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
# 颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
# 创建备份目录
mkdir -p "$BACKUP_DIR"
log_info "========================================"
log_info "生产环境备份 - $DATE"
log_info "========================================"
echo ""
# 1. 备份 Redis 数据
log_info "1. 备份 Redis 数据..."
docker run --rm \
-v ai_redis_data_prod:/data \
-v "$(pwd)/$BACKUP_DIR":/backup \
alpine tar czf /backup/redis-$DATE.tar.gz -C /data .
log_info "✅ Redis 数据备份完成: redis-$DATE.tar.gz"
# 2. 备份 Agent 日志
log_info "2. 备份 Agent 日志..."
docker run --rm \
-v ai_agent_logs_prod:/data \
-v "$(pwd)/$BACKUP_DIR":/backup \
alpine tar czf /backup/agent-logs-$DATE.tar.gz -C /data .
log_info "✅ Agent 日志备份完成: agent-logs-$DATE.tar.gz"
# 3. 备份 Grafana 配置(如果存在)
if docker volume inspect ai_grafana_data &> /dev/null; then
log_info "3. 备份 Grafana 配置..."
docker run --rm \
-v ai_grafana_data:/data \
-v "$(pwd)/$BACKUP_DIR":/backup \
alpine tar czf /backup/grafana-$DATE.tar.gz -C /data .
log_info "✅ Grafana 配置备份完成: grafana-$DATE.tar.gz"
fi
# 4. 备份环境变量文件
log_info "4. 备份环境变量文件..."
cp .env.production "$BACKUP_DIR/env-$DATE.backup"
chmod 600 "$BACKUP_DIR/env-$DATE.backup"
log_info "✅ 环境变量备份完成: env-$DATE.backup"
# 5. 清理旧备份
log_info "5. 清理 $RETENTION_DAYS 天前的旧备份..."
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
find "$BACKUP_DIR" -name "env-*.backup" -mtime +$RETENTION_DAYS -delete
log_info "✅ 旧备份清理完成"
# 6. 生成备份清单
log_info "6. 生成备份清单..."
cat > "$BACKUP_DIR/manifest-$DATE.txt" << EOF
备份时间: $DATE
备份内容:
- Redis 数据: redis-$DATE.tar.gz
- Agent 日志: agent-logs-$DATE.tar.gz
- 环境变量: env-$DATE.backup
EOF
log_info "✅ 备份清单生成完成: manifest-$DATE.txt"
echo ""
log_info "========================================"
log_info "✅ 备份完成!"
log_info "========================================"
echo ""
log_info "备份文件位置: $BACKUP_DIR"
log_info ""
ls -lh "$BACKUP_DIR" | grep "$DATE"