## 变更内容 ### 保留的核心运维脚本 - ✅ start.sh - 启动服务 - ✅ stop.sh - 停止服务 - ✅ init-pgvector.sql - 数据库初始化 ### 保留的部署工具 - ✅ deploy-production.sh - 生产环境部署 - ✅ backup-production.sh - 生产环境备份 - ✅ set-contact-token.sh - 设置联系令牌 - ✅ set-remote-contact-token.sh - 设置远程令牌 - ✅ verify-contact-token.sh - 验证令牌 ### 删除的临时调试脚本 - ❌ debug-webhook.sh - 实时监控日志 - ❌ check-conversations.sh - 检查会话 - ❌ check-chatwoot-config.sh - 检查配置 - ❌ verify-webhook.sh - 验证webhook - ❌ update-chatwoot-webhook.sh - 更新webhook Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
96 lines
2.5 KiB
Bash
Executable File
96 lines
2.5 KiB
Bash
Executable File
#!/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"
|