首页 教程 分类 Skills下载 关于
ZH EN JA KO
运维监控

OpenClaw数据备份与灾难恢复策略

· 12 分钟

前言

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 服务长期稳定运行的基石。不要等到数据丢失才想起备份的重要性。

OpenClaw 是开源免费的个人AI助手,支持 WhatsApp、Telegram、Discord 等多平台接入