2026年3月2日

如何备份 OpenClaw 个人数据:从零到 GitHub 自动化的完整方案

发布时间: 2026-03-02 分类: 工具使用 阅读时间: 8 分钟

发布时间: 2026-03-02
分类: 工具使用
阅读时间: 8 分钟


为什么要备份 OpenClaw 数据?

OpenClaw 是一个强大的 AI 助手平台,它存储了大量个人数据:

  • 记忆文件: MEMORY.mdAGENTS.md
  • 身份信息: AI 助手的”灵魂”和配置
  • 认证凭证: GitHub Token、API Keys 等
  • 会话历史: 对话记录和状态
  • 通道状态: WhatsApp、Feishu 等登录信息

这些数据一旦丢失,需要重新配置所有连接,恢复成本很高。因此,定期备份是必需的


OpenClaw 的数据结构

首先,让我们了解 OpenClaw 的数据存储位置:

~/.openclaw/                    # OpenClaw State Directory
├── openclaw.json              # Gateway 配置
├── workspace/                   # 个人工作空间
│   ├── MEMORY.md             # 长期记忆
│   ├── AGENTS.md             # 行为准则
│   ├── SOUL.md               # 灵魂文件
│   └── skills/               # 技能集合
├── credentials/                  # 认证凭证(敏感!)
├── agents/                     # Agent 配置和会话
├── feishu/                     # Feishu 通道状态
├── devices/                     # 设备配对
└── extensions/                  # 插件
    └── qqbot/              # 示例:QQ Bot 插件
        └── node_modules/     # npm 依赖(1.4GB!)

关键发现: extensions/node_modules/ 目录通常超过 1GB,但这些都是可重新安装的依赖,不需要备份


备份方案设计

核心思路

  1. 排除冗余: 不备份 node_modules,可通过 npm install 恢复
  2. 隔离备份: 不在生产目录中混入 Git 仓库,避免冲突
  3. 自动化: 使用 cron 定时任务,自动同步到 GitHub
  4. 安全存储: GitHub 私有仓库,保护敏感数据

完整实施步骤

第一步:创建 Git 仓库

不要在 ~/.openclaw/ 中初始化 Git! 原因:

  • Git 的 .git 目录会混入 OpenClaw 的运行时文件
  • OpenClaw 可能修改或删除 .git,导致版本控制混乱
  • 生产目录应该保持”干净”,Git 仓库应该独立

正确做法:在临时在目录创建 Git 仓库

# 创建备份目录
mkdir -p /tmp/openclaw-backup
cd /tmp/openclaw-backup

# 初始化 Git 仓库
git init
git config user.email "your-email@example.com"
git config user.name "Your Name"

第二步:创建 .gitignore

这是最关键的一步!.gitignore 决定了什么文件会被排除:

# OpenClaw Backup - .gitignore
# ============================

# 排除 extensions 目录(包含大量 node_modules)
extensions/

# 排除所有 node_modules
**/node_modules/

# 排除 package-lock.json 和 yarn.lock
**/package-lock.json
**/yarn.lock

# 排除日志文件
logs/
*.log

# 排除临时文件
*.tmp
*.temp
*.swp
.cache/
tmp/

# 排除编译产物
dist/
build/

# 排除系统文件
.DS_Store
Thumbs.db

效果: 备份大小从 1.4GB 降到 2.6MB(减少 99.8%!)


第三步:使用 rsync 同步文件

为什么不直接用 cp?因为 rsync 更强大:

rsync -av --delete --exclude="extensions" \
  ~/.openclaw/ \
  /tmp/openclaw-backup/

参数说明:

  • -a:归档模式,保持权限、时间戳等
  • -v:详细输出,显示同步的文件
  • --delete:删除备份中不存在于源的文件(保持同步)
  • --exclude="extensions":排除 extensions 目录

第四步:提交到 Git

cd /tmp/openclaw-backup

# 添加所有文件
git add -A

# 提交
git commit -m "OpenClaw 备份 - $(date '+%Y-%m-%d %H:%M:%S')"

第五步:关联 GitHub 仓库

创建 GitHub 私有仓库(必须私有!因为包含凭证)

# 添加远程仓库
git remote add origin https://github.com/username/openclaw-backup.git

使用 Personal Access Token(推荐):

  1. GitHub 设置 → Developer settings → Personal access tokens
  2. 创建 token,权限选择 repo(完全访问)
  3. 在 URL 中使用包含 token 的地址:
git remote set-url origin \
  https://ghp_YOUR_TOKEN@github.com/username/openclaw-backup.git

推送:

git push -u origin master

自动化:设置定时备份

使用 OpenClaw 的 cron 功能,每天自动备份两次。

创建备份脚本

将以下步骤封装到脚本中:

#!/bin/bash
# OpenClaw 自动备份脚本

SOURCE_DIR="~/.openclaw"
BACKUP_DIR="/tmp/openclaw-backup"
REMOTE_REPO="https://ghp_YOUR_TOKEN@github.com/username/repo.git"

# 同步文件
rsync -av --delete --exclude="extensions" "$SOURCE_DIR/" "$BACKUP_DIR/"

# 提交到 Git
cd "$BACKUP_DIR"
git add -A
git commit -m "自动备份 $(date '+%Y-%m-%d %H:%M:%S')"

# 推送到 GitHub
git push

保存为: ~/.openclaw/workspace/backup.sh
设置权限: chmod +x ~/.openclaw/workspace/backup.sh


设置 OpenClaw Cron 任务

OpenClaw 提供了强大的 cron 命令:

# 凌晨 0 点备份
openclaw cron add \
  --name "OpenClaw 备份-凌晨" \
  --cron "0 0 * * *" \
  --message "执行 ~/.openclaw/workspace/backup.sh" \
  --session isolated

# 中午 12 点备份
openclaw cron add \
  --name "OpenClaw 备份-中午" \
  --cron "0 12 * * *" \
  --message "执行 ~/.openclaw/workspace/backup.sh" \
  --session isolated

验证:

openclaw cron list

输出:

``` ID Name Schedule Next Status b023627e-… OpenClaw 备份-凌晨 cron 0 0 * * * in 10h idle b0c11dce-… OpenClaw 备份-中午 cron 0 12 * * * in 22h idle ```


数据验证

检查备份大小

cd /tmp/openclaw-backup
du -sh .

预期结果: 约 2-5MB(取决于个人数据量)

包含内容:

  • openclaw.json - Gateway 配置
  • workspace/ - 长期记忆、技能、脚本
  • credentials/ - 认证凭证
  • agents/ - Agent 状态
  • feishu/ - Feishu 通道状态

验证 Git 提交

cd /tmp/openclaw-backup
git log --oneline -5

输出示例:

6a7e410 - OpenClaw 备份 - 2026-03-02 13:10:03
...

验证 GitHub 仓库

访问 GitHub 仓库,确认:

  • 仓库是私有的(至关重要!)
  • 包含 .gitignore 文件
  • 没有 node_modules 目录
  • 所有重要文件都在

恢复步骤(如果需要)

在目标机器上:

# 拉取备份仓库
git clone https://github.com/username/openclaw-backup.git

# 安装 OpenClaw
npm install -g @openclaw/openclaw

# 恢复 extensions
cd ~/.openclaw/extensions/qqbot
npm install

# 复制备份到目标目录
rsync -av ~/openclaw-backup/ ~/.openclaw/

# 运行 Doctor
openclaw doctor

# 启动 Gateway
openclaw gateway start

安全最佳实践

1. Token 管理

  • ✅ 使用 Personal Access Token,不要用密码
  • ✅ 定期轮换 Token(每 3-6 个月)
  • ✅ 如果 Token 泄露,立即撤销并重建
  • ✅ 在 URL 中使用 token 时,注意不要泄露到日志或公开内容

2. 仓库安全

  • 必须使用私有仓库(包含 API keys、OAuth tokens)
  • ✅ 定期检查仓库访问权限
  • ✅ 不要在公共仓库中提交凭证

3. 备份策略

  • ✅ 每日备份两次(0:00 和 12:00)
  • ✅ 验证备份成功(检查 cron 运行日志)
  • ✅ 定期从 GitHub 拉取并验证恢复流程

4. 监控和维护

# 查看备份日志
cat /tmp/openclaw-backup.log

# 查看 cron 任务状态
openclaw cron list

# 手动触发备份
/root/.openclaw/workspace/backup.sh

常见问题

Q1: 为什么不直接在生产目录初始化 Git?

A: 因为 OpenClaw 运行时会动态修改文件,Git 会追踪这些变化,导致版本控制混乱。使用独立的备份目录更安全、可控。

Q2: 为什么备份只有 2.6MB,但 OpenClaw 目录有 1.4GB?

A: 因为排除了 extensions/node_modules/。这些依赖可以通过 npm install 重新安装,不需要备份。

Q3: 如何修改备份频率?

A: 使用 openclaw cron 命令:

# 删除旧任务
openclaw cron rm <任务ID>

# 创建新任务(例如每 6 小时)
openclaw cron add \
  --cron "0 */6 * * *" \
  --name "OpenClaw 备份-每6小时"

Q4: 备份失败了怎么办?

A: 检查以下几点:

  1. GitHub Token 是否过期?
  2. 网络连接是否正常?
  3. 磁盘空间是否充足?
  4. 查看备份日志:/tmp/openclaw-backup.log

总结

通过本文档,你已经学会了:

✅ OpenClaw 数据结构分析
✅ Git 仓库创建和配置
✅ 智能排除策略(.gitignore)
✅ rsync 文件同步
✅ GitHub 私有仓库设置
✅ OpenClaw Cron 自动化
✅ 安全最佳实践
✅ 恢复流程

从手动备份到自动化定时同步,你的 OpenClaw 数据现在安全了!


相关资源: