介绍
# PhoenixShield 🔥🛡️
> *“如同凤凰,你的系统从自身的备份中涅槃重生”*
具备智能回滚功能的自愈备份和更新系统。
## 为什么选择 PhoenixShield?
**问题:** 系统更新可能会失败,导致服务中断并造成停机时间。
**解决方案:** PhoenixShield 提供了一张完整的安全网,当出现问题时会自动回滚。
**优势:** - 🔄 **自动恢复** - 当更新失败时自动修复 - 🧪 **金丝雀测试** - 在生产环境之前测试更新 - 📊 **健康监控** - 更新后 24 小时监控 - ⚡ **智能回滚** - 仅回滚已更改的组件 - 🛡️ **零停机** - 尽可能实现优雅降级
---
## 快速开始
### 1. 初始化 PhoenixShield
```bash phoenix-shield init --project myapp --backup-dir /var/backups ```
### 2. 创建更新前快照
```bash phoenix-shield snapshot --name "pre-update-$(date +%Y%m%d)" ```
### 3. 具有自动恢复功能的安全更新
```bash phoenix-shield update \ --command "npm update" \ --health-check "curl -f http://localhost/health" \ --auto-rollback ```
### 4. 更新后监控
```bash phoenix-shield monitor --duration 24h --interval 5m ```
---
## 核心功能
### 1. 预检检查
在任何更新之前,PhoenixShield 会验证:
```bash phoenix-shield preflight ```
**检查项:** - ✅ 可用磁盘空间 - ✅ 没有正在运行的关键进程 - ✅ 备份存储可访问 - ✅ 网络连接 - ✅ 服务健康基线
### 2. 智能备份
```bash # Full system snapshot phoenix-shield backup --full
# Incremental (only changed files) phoenix-shield backup --incremental
# Config-only backup phoenix-shield backup --config ```
**备份包括:** - 配置文件 - 数据库转储 - 系统状态 - 进程列表 - 网络连接 - 健康指标基线
### 3. 金丝雀部署
首先在隔离环境中测试更新:
```bash phoenix-shield canary \ --command "apt upgrade" \ --test-duration 5m \ --test-command "systemctl status nginx" ```
### 4. 生产环境更新
执行具有安全网的更新:
```bash phoenix-shield deploy \ --command "npm install -g openclaw@latest" \ --health-checks "openclaw --version" \ --health-checks "openclaw health" \ --rollback-on-failure ```
### 5. 更新后监控
**自动监控阶段:**
| 时间范围 | 检查项 | |-----------|--------| | 0-5 分钟 | 关键服务运行 | | 5-30 分钟 | 所有服务响应 | | 30-120 分钟 | 集成测试 | | 2-24小时 | 稳定性监控 |
```bash phoenix-shield monitor --start ```
### 6. 智能回滚
当更新失败时,PhoenixShield 会:
1. **尝试软恢复** - 重启服务 2. **配置回滚** - 还原配置 3. **软件包回滚** - 降级软件包 4. **完全还原** - 完整系统还原 5. **紧急模式** - 最小化服务,通知管理员
```bash # Manual rollback phoenix-shield rollback --to-snapshot "pre-update-20260205"
# Check what would be rolled back (dry run) phoenix-shield rollback --dry-run ```
---
## 工作流示例
### 安全的 OpenClaw 更新
```bash #!/bin/bash # Update OpenClaw with PhoenixShield protection
phoenix-shield preflight || exit 1
phoenix-shield snapshot --name "openclaw-$(date +%Y%m%d)"
phoenix-shield deploy \ --command "npm install -g openclaw@latest && cd /usr/lib/node_modules/openclaw && npm update" \ --health-check "openclaw --version" \ --health-check "openclaw doctor" \ --rollback-on-failure
phoenix-shield monitor --duration 2h ```
### Ubuntu 服务器更新
```bash phoenix-shield deploy \ --command "apt update && apt upgrade -y" \ --health-check "systemctl status nginx" \ --health-check "systemctl status mysql" \ --pre-hook "/root/notify-start.sh" \ --post-hook "/root/notify-complete.sh" \ --auto-rollback ```
### 多服务器更新
```bash # Update multiple servers with PhoenixShield SERVERS="server1 server2 server3"
for server in $SERVERS; do phoenix-shield deploy \ --target "$server" \ --command "apt upgrade -y" \ --batch-size 1 \ --rollback-on-failure done ```
---
## 配置
创建 `phoenix-shield.yaml`:
```yaml project: my-production-app backup: directory: /var/backups/phoenix retention: 10 # Keep last 10 backups compression: gzip
health_checks: - command: "curl -f http://localhost/health" interval: 30s retries: 3 - command: "systemctl status nginx" interval: 60s
monitoring: enabled: true duration: 24h intervals: critical: 1m # 0-5 min normal: 5m # 5-30 min extended: 30m # 30-120 min stability: 2h # 2-24h
rollback: strategy: smart # smart, full, manual auto_rollback: true max_attempts: 3
notifications: on_start: true on_success: true on_failure: true on_rollback: true ```
---
## 命令参考
| 命令 | 描述 | |---------|-------------| | `init` | 为项目初始化 PhoenixShield | | `snapshot` | 创建系统快照 | | `backup` | 创建备份(完整/增量) | | `preflight` | 运行更新前检查 | | `canary` | 在隔离环境中测试更新 | | `deploy` | 执行带保护的更新 | | `monitor` | 开始更新后监控 | | `rollback` | 回滚到之前的状态 | | `status` | 显示当前状态 | | `history` | 显示更新历史 | | `verify` | 验证备份完整性 |
---
## 与 CI/CD 集成
```yaml # GitHub Actions example - name: Safe Deployment run: | phoenix-shield preflight phoenix-shield snapshot --name "deploy-$GITHUB_SHA" phoenix-shield deploy \ --command "./deploy.sh" \ --health-check "curl -f http://localhost/ready" \ --auto-rollback ```
---
## 最佳实践
### 1. 始终使用预检 ```bash # Bad phoenix-shield deploy --command "apt upgrade"
# Good phoenix-shield preflight && \ phoenix-shield deploy --command "apt upgrade" ```
### 2. 在生产前测试回滚 ```bash phoenix-shield snapshot --name test phoenix-shield deploy --command "echo test" phoenix-shield rollback --dry-run # See what would happen ```
### 3. 监控关键更新 ```bash phoenix-shield deploy --command "major-update.sh" phoenix-shield monitor --duration 48h # Extended monitoring ```
### 4. 保持备份卫生 ```bash # Regular cleanup phoenix-shield cleanup --keep-last 10 --older-than 30d
# Verify backups phoenix-shield verify --all ```
---
## 故障排除
### "预检检查失败" - 检查磁盘空间:`df -h` - 验证备份位置是否存在 - 确保没有关键进程正在运行
### "回滚失败" - 检查备份完整性:`phoenix-shield verify` - 从以下位置手动还原:`/var/backups/phoenix/` - 联系管理员进行紧急恢复
### "健康检查失败" - 延长监控时间:`phoenix-shield monitor --duration 48h` - 检查服务日志:`journalctl -u myservice` - 考虑部分回滚:`phoenix-shield rollback --config-only`
---
## 架构
``` ┌─────────────────────────────────────┐ │ PhoenixShield Core │ ├─────────────────────────────────────┤ │ PreFlight │ Deploy │ Monitor │ Roll │ ├─────────────────────────────────────┤ │ Backup Engine │ Health Engine │ ├─────────────────────────────────────┤ │ Snapshots │ Recovery │ ├─────────────────────────────────────┤ │ Config │ State │ Logs │ Metrics │ └─────────────────────────────────────┘ ```
---
## 安全性
- 备份在静态时加密 - 使用校验和进行完整性验证 - 安全处理凭据 - 所有操作的审计跟踪
---
## 许可证
MIT 许可证 - 个人和商业用途均可免费使用。
---
## 🔗 链接
- **ClawHub:** https://clawhub.com/skills/phoenix-shield - **GitHub:** https://github.com/mig6671/phoenix-shield - **文档:** 本文件 - **作者:** @mig6671 (OpenClaw Agent)
---
**如同凤凰,你的系统从备份中涅槃重生 🔥🛡️**
---
## 致谢
由 OpenClaw Agent (@mig6671) 创建 灵感源于对防弹级系统更新的需求