Files
awoooi/scripts/backup/backup-all.sh
2026-07-18 19:12:22 +08:00

172 lines
6.6 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# =============================================================================
# WOOO AIOps - 全服務備份總控腳本
# 版本: 3.0.0
# 建立日期: 2026-03-12
# 2026-04-05 Claude Code: 加入 AWOOOI DB (v1→v2) — 首席架構師備份審計
# 2026-04-05 Claude Code: 加入 Langfuse/Monitoring/SignOz/Open-WebUI/ClawBot (v2→v3) — 備份覆蓋率審計
# =============================================================================
set -euo pipefail
source "$(dirname "$0")/common.sh"
main() {
local start_time=$(date +%s)
local failed=0
local total=14
log_info "╔══════════════════════════════════════════════════════════════╗"
log_info "║ WOOO AIOps - 全服務備份開始 (v3.0) ║"
log_info "╚══════════════════════════════════════════════════════════════╝"
# 備份 Gitea
log_info ">>> [1/${total}] 備份 Gitea..."
if /backup/scripts/backup-gitea.sh; then
log_success " Gitea 備份成功"
else
log_error " Gitea 備份失敗"
failed=$((failed+1))
fi
# 備份 MOMO Pro
log_info ">>> [2/${total}] 備份 MOMO Pro..."
if /backup/scripts/backup-momo.sh; then
log_success " MOMO Pro 備份成功"
else
log_error " MOMO Pro 備份失敗"
failed=$((failed+1))
fi
# 備份 Harbor
log_info ">>> [3/${total}] 備份 Harbor..."
if /backup/scripts/backup-harbor.sh; then
log_success " Harbor 備份成功"
else
log_error " Harbor 備份失敗"
failed=$((failed+1))
fi
# 備份 AWOOOI DB (awoooi_prod + k3s_datastore)
# 2026-04-05 Claude Code: 首席架構師備份審計後加入
log_info ">>> [4/${total}] 備份 AWOOOI DB..."
if /backup/scripts/backup-awoooi.sh; then
log_success " AWOOOI DB 備份成功"
else
log_error " AWOOOI DB 備份失敗"
failed=$((failed+1))
fi
# 備份 Langfuse (AI 追蹤/評測數據)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [5/${total}] 備份 Langfuse..."
if /backup/scripts/backup-langfuse.sh; then
log_success " Langfuse 備份成功"
else
log_error " Langfuse 備份失敗"
failed=$((failed+1))
fi
# 備份 Monitoring (Prometheus + Grafana + Alertmanager)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [6/${total}] 備份 Monitoring..."
if /backup/scripts/backup-monitoring.sh; then
log_success " Monitoring 備份成功"
else
log_error " Monitoring 備份失敗"
failed=$((failed+1))
fi
# 備份 SignOz (ClickHouse + SQLite)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [7/${total}] 備份 SignOz..."
if /backup/scripts/backup-signoz.sh; then
log_success " SignOz 備份成功"
else
log_error " SignOz 備份失敗"
failed=$((failed+1))
fi
# 備份 Open-WebUI (LLM 對話紀錄,從 188)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [8/${total}] 備份 Open-WebUI (188)..."
if /backup/scripts/backup-open-webui.sh; then
log_success " Open-WebUI 備份成功"
else
log_error " Open-WebUI 備份失敗"
failed=$((failed+1))
fi
# 備份 ClawBot Redis (狀態/快取,從 188低優先)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [9/${total}] 備份 ClawBot Redis (188)..."
if /backup/scripts/backup-clawbot.sh; then
log_success " ClawBot Redis 備份成功"
else
log_error " ClawBot Redis 備份失敗"
failed=$((failed+1))
fi
# Sentry data plane (Postgres, ClickHouse, Kafka, Redis, object state)
log_info ">>> [10/${total}] 備份 Sentry..."
if /backup/scripts/backup-sentry.sh; then
log_success " Sentry 備份成功"
else
log_error " Sentry 備份失敗"
failed=$((failed+1))
fi
# AI model/tooling manifests from 188 (model blobs remain excluded by policy)
log_info ">>> [11/${total}] 備份 AI artifacts (188)..."
if /backup/scripts/backup-ai-artifacts.sh; then
log_success " AI artifacts 備份成功"
else
log_error " AI artifacts 備份失敗"
failed=$((failed+1))
fi
# Host, K3s, service, and recovery configuration state
log_info ">>> [12/${total}] 備份主機與服務設定..."
if /backup/scripts/backup-configs.sh; then
log_success " 主機與服務設定備份成功"
else
log_error " 主機與服務設定備份失敗"
failed=$((failed+1))
fi
# Public route, TLS, DNS-answer, and edge inventory evidence
log_info ">>> [13/${total}] 備份 public routes..."
if /backup/scripts/backup-public-routes.sh; then
log_success " Public routes 備份成功"
else
log_error " Public routes 備份失敗"
failed=$((failed+1))
fi
# Host188 product data planes: VibeWork/FIFA PostgreSQL, FIFA Redis, and n8n.
log_info ">>> [14/${total}] 備份 Host188 產品資料..."
if /backup/scripts/backup-host188-products.sh; then
log_success " Host188 產品資料備份成功"
else
log_error " Host188 產品資料備份失敗"
failed=$((failed+1))
fi
local end_time=$(date +%s)
local duration=$((end_time - start_time))
log_info "╔══════════════════════════════════════════════════════════════╗"
if [ $failed -eq 0 ]; then
log_success "║ 全服務備份完成 (${duration}s) - 全部成功 (${total}/${total}) ║"
notify_clawbot "success" "all" "全服務備份完成 (${total}/${total} 成功)" "${duration}"
else
log_error "║ 全服務備份完成 (${duration}s) - ${failed} 個失敗 ($((total-failed))/${total}) ║"
notify_clawbot "warning" "all" "全服務備份完成 ($((total-failed))/${total} 成功)" "${duration}"
fi
log_info "╚══════════════════════════════════════════════════════════════╝"
return $failed
}
main "$@"