Files
assistant/scripts/backup-production.sh
wangliang c8f26b6f9f chore: 清理 scripts 目录,保留核心运维和部署脚本
## 变更内容

### 保留的核心运维脚本
-  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>
2026-01-27 13:59:12 +08:00

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"