Administrator
发布于 2026-02-16 / 4 阅读
0
0

OpenClaw 新备份系统:一键部署与零依赖恢复

OpenClaw 新备份系统:一键部署与零依赖恢复

最近重构了 OpenClaw 的备份体系,从原来的多仓库分散管理改为单仓标签轮转架构,实现更简洁的部署和更可靠的重装恢复。

设计思路

旧方案的问题是:

  • 多个 Git 仓库(memory/dotfiles/skills/recovery)分散管理
  • 恢复时需要逐个克隆
  • 配置复杂,容易出错

新方案的核心是单仓 + 标签轮转

一个仓库:openclaw-backup.git
四个标签:current → backup-1 → backup-2 → backup-3

每次备份时自动轮转,保留最近3个历史版本。

架构特点

1. 极简命令

backup now      # 立即备份
backup list     # 查看历史
backup restore 1  # 恢复到指定版本
backup auto     # 启动自动监听
backup stop     # 停止监听

2. 自动监听

文件变更后5秒自动触发备份,无需手动干预。使用 Node.js + fswatch 实现跨平台兼容。

3. 零依赖恢复

重装系统后只需一行命令:

curl git://10.10.10.230/openclaw-backup.git/restore.sh | bash

无需预装 Git、SSH密钥,甚至不需要手动配置任何东西。

技术实现

标签轮转逻辑

新备份前:  current    backup-1    backup-2    backup-3
               ↓          ↓           ↓           ↓
新备份后:  新内容    原current    原b-1       原b-2
                                    (原b-3被删除)

Git 标签是轻量级的,不会复制文件内容,只是指针移动,效率很高。

Git Daemon 匿名访问

git daemon --reuseaddr --base-path=/srv/git/ /srv/git/

协议:git://(端口9418),无需认证即可克隆。适合恢复场景。

常驻进程管理

备份服务作为后台进程运行,PID 文件管理:

# 启动
nohup node auto-save-silent.mjs &

# 停止
kill $(cat ~/.openclaw/logs/auto-save.pid)

部署流程

首次部署(Git 服务器):

# 1. 创建裸仓库
ssh git@10.10.10.230 'mkdir -p /srv/git/openclaw-backup.git && cd /srv/git/openclaw-backup.git && git init --bare'

# 2. 初始化本地备份
backup now

# 3. 配置开机自启
bash scripts/auto-save-service.sh start

重装恢复:

curl git://10.10.10.230/openclaw-backup.git/restore.sh | bash

全程约10分钟,自动完成:

  1. 安装 Homebrew/Git/Node
  2. 恢复 SSH 密钥
  3. 克隆 workspace(含技能+记忆+脚本)
  4. 安装 OpenClaw
  5. 启动备份服务

对比旧方案

特性 旧方案 新方案
仓库数量 4个 1个
恢复命令 多行 1行
预装依赖 Git/SSH
历史版本 3个
自动备份 需配置 内置

适用场景

这套系统适合:

  • 个人工作站备份
  • 开发环境同步
  • 配置即代码(Dotfiles)
  • 需要快速重装恢复的场景

不适合:

  • 大型项目代码管理(用 Git 原生工作流)
  • 需要审计日志的企业环境
  • 多人协作频繁的场景

后续优化

  • 支持备份到云端(S3/阿里云OSS)
  • Web 界面查看历史版本
  • 增量备份(目前是全量)
  • 备份加密

备份这件事,越简单越容易坚持。新系统用了两周,确实比原来省心多了。


评论