前言
OpenClaw 运行过程中会产生多种重要数据:配置文件、API 密钥、对话历史、技能配置等。一旦服务器故障或误操作导致数据丢失,恢复成本极高。本文将详细讲解如何制定完善的备份策略,并在灾难发生时快速恢复服务。
一、需要备份的数据
1.1 数据清单
| 数据类型 | 默认路径 | 重要性 | 变更频率 |
|---|---|---|---|
| 主配置文件 | ~/.config/openclaw/openclaw.json5 |
极高 | 低 |
| 环境变量配置 | ~/.config/openclaw/.env |
极高 | 低 |
| 频道凭证 | ~/.openclaw/credentials/ |
极高 | 低 |
| 会话数据 | ~/.openclaw/sessions/ |
高 | 高 |
| 技能配置 | ~/.openclaw/skills/ |
中 | 中 |
| 知识库数据 | ~/.openclaw/knowledge/ |
高 | 中 |
| SSL 证书 | ~/.openclaw/ssl/ |
高 | 低 |
| 日志文件 | ~/.local/share/openclaw/logs/ |
低 | 高 |
1.2 查看数据占用
# 查看各数据目录的磁盘占用
du -sh ~/.config/openclaw/
du -sh ~/.openclaw/sessions/
du -sh ~/.openclaw/skills/
du -sh ~/.openclaw/knowledge/
du -sh ~/.local/share/openclaw/logs/
二、手动备份
2.1 完整备份
# 创建备份目录
BACKUP_DIR="/backup/openclaw/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# 备份配置文件
cp -r ~/.config/openclaw/ "$BACKUP_DIR/config/"
# 备份运行数据
cp -r ~/.openclaw/ "$BACKUP_DIR/data/"
# 压缩备份
cd /backup/openclaw/
tar -czf "openclaw-backup-$(date +%Y%m%d_%H%M%S).tar.gz" "$(date +%Y%m%d_%H%M%S)/"
echo "备份完成: $BACKUP_DIR"
2.2 仅备份核心配置
如果只需要备份最关键的配置(迁移到新服务器时最常用):
# 导出配置
openclaw config export > ~/openclaw-config-backup.json
# 或手动打包核心文件
tar -czf openclaw-core-backup.tar.gz \
~/.config/openclaw/openclaw.json5 \
~/.config/openclaw/.env \
~/.openclaw/credentials/
2.3 使用 openclaw backup 命令
OpenClaw 内置了备份命令,可以一键完成:
# 完整备份(配置+数据)
openclaw backup create
# 仅备份配置
openclaw backup create --config-only
# 指定输出路径
openclaw backup create --output /backup/openclaw-20260314.tar.gz
# 查看备份内容
openclaw backup list
三、自动定期备份
3.1 使用 Cron 定时备份
创建自动备份脚本:
#!/bin/bash
# /usr/local/bin/openclaw-backup.sh
BACKUP_ROOT="/backup/openclaw"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_ROOT/openclaw-$DATE.tar.gz"
KEEP_DAYS=30
# 创建备份目录
mkdir -p "$BACKUP_ROOT"
# 执行备份
openclaw backup create --output "$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "[$(date)] 备份成功: $BACKUP_FILE" >> /var/log/openclaw-backup.log
else
echo "[$(date)] 备份失败!" >> /var/log/openclaw-backup.log
# 发送告警通知
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" \
-d text="OpenClaw 备份失败,请检查!"
exit 1
fi
# 清理旧备份
find "$BACKUP_ROOT" -name "openclaw-*.tar.gz" -mtime +$KEEP_DAYS -delete
echo "[$(date)] 已清理 ${KEEP_DAYS} 天前的旧备份" >> /var/log/openclaw-backup.log
chmod +x /usr/local/bin/openclaw-backup.sh
# 设置定时任务:每天凌晨 2 点执行
crontab -e
# 添加:0 2 * * * /usr/local/bin/openclaw-backup.sh
3.2 备份到远程存储
本地备份无法防御磁盘故障,建议同步到远程存储:
# 同步到远程服务器(通过 rsync)
rsync -avz /backup/openclaw/ user@backup-server:/remote-backup/openclaw/
# 同步到 S3 兼容存储
aws s3 sync /backup/openclaw/ s3://my-bucket/openclaw-backup/ --storage-class STANDARD_IA
# 同步到 Backblaze B2
b2 sync /backup/openclaw/ b2://my-bucket/openclaw-backup/
在备份脚本末尾添加远程同步步骤:
# 在 openclaw-backup.sh 末尾添加
rsync -avz --delete "$BACKUP_ROOT/" user@backup-server:/remote-backup/openclaw/
echo "[$(date)] 远程同步完成" >> /var/log/openclaw-backup.log
3.3 备份加密
如果备份包含敏感信息(API 密钥等),建议加密:
# 使用 GPG 加密备份
gpg --symmetric --cipher-algo AES256 "$BACKUP_FILE"
rm "$BACKUP_FILE" # 删除未加密的备份
# 解密时
gpg --decrypt "$BACKUP_FILE.gpg" > "$BACKUP_FILE"
四、灾难恢复
4.1 恢复流程
当需要从备份恢复时,按以下步骤操作:
# 1. 安装 OpenClaw(如果是新服务器)
npm install -g openclaw
# 2. 停止当前服务(如果正在运行)
openclaw stop
# 3. 使用 openclaw backup restore 命令
openclaw backup restore /backup/openclaw-20260314.tar.gz
# 或手动恢复
tar -xzf /backup/openclaw-20260314.tar.gz -C /tmp/openclaw-restore/
cp -r /tmp/openclaw-restore/config/* ~/.config/openclaw/
cp -r /tmp/openclaw-restore/data/* ~/.openclaw/
# 4. 验证配置
openclaw config validate
# 5. 启动服务
openclaw up -d
# 6. 检查健康状态
openclaw doctor
curl -s http://localhost:18789/health | jq .
4.2 部分恢复
有时你只需要恢复特定数据:
# 仅恢复配置文件
openclaw backup restore /backup/openclaw-20260314.tar.gz --config-only
# 仅恢复会话数据
openclaw backup restore /backup/openclaw-20260314.tar.gz --sessions-only
# 仅恢复知识库
openclaw backup restore /backup/openclaw-20260314.tar.gz --knowledge-only
4.3 跨服务器迁移
将 OpenClaw 从一台服务器迁移到另一台:
# 在旧服务器上
openclaw backup create --output /tmp/openclaw-migration.tar.gz
scp /tmp/openclaw-migration.tar.gz user@new-server:/tmp/
# 在新服务器上
npm install -g openclaw
openclaw backup restore /tmp/openclaw-migration.tar.gz
openclaw up -d
# 验证所有频道是否正常连接
openclaw status
五、备份策略建议
5.1 分层备份策略
| 层级 | 频率 | 保留时间 | 内容 | 存储位置 |
|---|---|---|---|---|
| 每日备份 | 每天 | 30天 | 完整备份 | 本地 + 远程 |
| 每周备份 | 每周日 | 90天 | 完整备份 | 远程存储 |
| 配置变更备份 | 每次变更 | 永久 | 仅配置 | Git 仓库 |
5.2 配置文件版本管理
强烈建议使用 Git 管理配置文件变更:
# 初始化 Git 仓库
cd ~/.config/openclaw
git init
echo ".env" >> .gitignore # 排除敏感环境变量
git add .
git commit -m "Initial OpenClaw config"
# 每次修改配置后
git add -A
git commit -m "更新模型配置为 claude-3.5-sonnet"
# 推送到私有仓库
git remote add origin [email protected]:yourname/openclaw-config.git
git push -u origin main
5.3 定期验证备份
备份不验证等于没有备份。建议每月执行一次恢复演练:
# 在测试环境尝试恢复
docker run -it --rm -v /backup/openclaw/latest.tar.gz:/backup.tar.gz node:20 bash
npm install -g openclaw
openclaw backup restore /backup.tar.gz
openclaw config validate
制定并执行可靠的备份策略,是保障 OpenClaw 服务长期稳定运行的基石。不要等到数据丢失才想起备份的重要性。