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

OpenClaw数据备份和恢复完整教程

· 20 分钟

前言

数据备份是运维中最重要但最容易被忽视的环节。对于 OpenClaw 来说,配置文件、技能插件、对话历史等数据一旦丢失,恢复成本极高。本教程将详细介绍需要备份哪些数据、如何实现自动化备份、以及灾难恢复和服务器迁移的完整流程。

需要备份的数据

数据清单

数据类型 存储位置 重要程度 大小估计
主配置文件 ~/.config/openclaw/openclaw.json5 极高 < 10 KB
技能文件 ~/.openclaw/skills/*.md 每个 1-50 KB
对话历史 ~/.openclaw/data/conversations/ 视使用量而定
MCP 配置 ~/.openclaw/mcp/ < 100 KB
用户数据 ~/.openclaw/data/users/ 视用户数而定
日志文件 ~/.openclaw/logs/ 可能较大
SSL 证书 /etc/letsencrypt/ 或自定义路径 < 100 KB
环境变量 ~/.bashrc~/.env 极高 < 5 KB

最小备份集

如果存储空间有限,至少备份以下内容:

~/.config/openclaw/openclaw.json5    # 主配置
~/.openclaw/skills/                   # 所有技能
~/.openclaw/mcp/                      # MCP 配置

有了这三项,即使其他数据丢失,也能快速恢复核心功能。

第一步:手动备份

1.1 一键备份脚本

创建一个简单的备份脚本:

nano ~/openclaw-backup.sh

写入以下内容:

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

# 配置
BACKUP_DIR="$HOME/openclaw-backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="openclaw-backup-${DATE}.tar.gz"

# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 需要备份的路径
PATHS=(
    "$HOME/.config/openclaw"
    "$HOME/.openclaw/skills"
    "$HOME/.openclaw/mcp"
    "$HOME/.openclaw/data"
)

# 可选:备份环境变量(仅包含 OPENCLAW 相关的)
ENV_FILE="/tmp/openclaw-env-${DATE}.txt"
env | grep -E '^(OPENCLAW_|OPENAI_|ANTHROPIC_|GOOGLE_AI_|DEEPSEEK_|OPENROUTER_)' > "$ENV_FILE"

# 创建压缩备份
echo "开始备份..."
tar -czf "${BACKUP_DIR}/${BACKUP_FILE}" \
    "${PATHS[@]}" \
    "$ENV_FILE" \
    2>/dev/null

# 清理临时文件
rm -f "$ENV_FILE"

# 计算备份大小
SIZE=$(du -h "${BACKUP_DIR}/${BACKUP_FILE}" | cut -f1)

echo "备份完成:"
echo "  文件:${BACKUP_DIR}/${BACKUP_FILE}"
echo "  大小:${SIZE}"

# 保留最近 30 个备份,删除更旧的
cd "$BACKUP_DIR"
ls -t openclaw-backup-*.tar.gz | tail -n +31 | xargs -r rm
echo "已清理过期备份"

设置权限并运行:

chmod +x ~/openclaw-backup.sh
~/openclaw-backup.sh

1.2 验证备份

# 查看备份内容
tar -tzf ~/openclaw-backups/openclaw-backup-*.tar.gz | head -20

# 检查文件完整性
tar -tzf ~/openclaw-backups/openclaw-backup-*.tar.gz > /dev/null && echo "备份文件完整" || echo "备份文件损坏"

第二步:自动化备份

2.1 使用 Cron 定时备份

crontab -e

添加以下条目:

# 每天凌晨 2 点自动备份 OpenClaw
0 2 * * * /home/your-user/openclaw-backup.sh >> /var/log/openclaw-backup.log 2>&1

# 每周日凌晨 3 点创建完整备份(包含日志)
0 3 * * 0 /home/your-user/openclaw-backup-full.sh >> /var/log/openclaw-backup.log 2>&1

2.2 完整备份脚本(含日志和对话历史)

nano ~/openclaw-backup-full.sh
#!/bin/bash
# OpenClaw 完整备份脚本(周度)

BACKUP_DIR="$HOME/openclaw-backups/weekly"
DATE=$(date +%Y%m%d)
BACKUP_FILE="openclaw-full-${DATE}.tar.gz"

mkdir -p "$BACKUP_DIR"

# 暂停 OpenClaw 以确保数据一致性
echo "暂停 OpenClaw 服务..."
openclaw restart

# 等待服务完全停止
sleep 5

# 完整备份
echo "开始完整备份..."
tar -czf "${BACKUP_DIR}/${BACKUP_FILE}" \
    "$HOME/.config/openclaw" \
    "$HOME/.openclaw" \
    2>/dev/null

# 恢复 OpenClaw 服务
echo "恢复 OpenClaw 服务..."
openclaw up -d

SIZE=$(du -h "${BACKUP_DIR}/${BACKUP_FILE}" | cut -f1)
echo "完整备份完成:${SIZE}"

# 保留最近 12 周的备份
cd "$BACKUP_DIR"
ls -t openclaw-full-*.tar.gz | tail -n +13 | xargs -r rm
chmod +x ~/openclaw-backup-full.sh

2.3 备份到远程存储

本地备份不够安全,建议同步到远程:

方法一:rsync 同步到另一台服务器

# 在备份脚本末尾添加
rsync -avz --delete \
    "$BACKUP_DIR/" \
    backup-user@backup-server:/backups/openclaw/

方法二:上传到 S3 兼容存储

# 安装 AWS CLI 或兼容工具
# apt install awscli

# 在备份脚本末尾添加
aws s3 cp "${BACKUP_DIR}/${BACKUP_FILE}" \
    s3://your-backup-bucket/openclaw/ \
    --storage-class STANDARD_IA

方法三:上传到 Google Drive / OneDrive

# 使用 rclone
# apt install rclone
# rclone config (首次需要配置)

rclone copy "${BACKUP_DIR}/${BACKUP_FILE}" \
    gdrive:Backups/openclaw/

2.4 备份通知

在备份脚本中添加通知功能:

# 通过 OpenClaw 自身发送备份通知(如果配置了 Telegram)
notify_backup() {
    local status=$1
    local message=$2
    curl -s -X POST "http://localhost:18789/api/notify" \
        -H "Content-Type: application/json" \
        -d "{\"channel\": \"telegram\", \"user\": \"${ADMIN_TELEGRAM_ID}\", \"message\": \"${message}\"}"
}

# 在备份成功后调用
notify_backup "success" "OpenClaw 每日备份完成,大小:${SIZE}"

# 在备份失败时调用
if [ $? -ne 0 ]; then
    notify_backup "error" "OpenClaw 备份失败,请检查日志"
fi

第三步:数据恢复

3.1 恢复流程

当需要从备份恢复时,按以下步骤操作:

# 第一步:停止 OpenClaw
openclaw restart

# 第二步:备份当前数据(以防万一)
mv ~/.config/openclaw ~/.config/openclaw.broken
mv ~/.openclaw ~/.openclaw.broken

# 第三步:解压备份文件
cd /
tar -xzf ~/openclaw-backups/openclaw-backup-20260404_020000.tar.gz

# 第四步:恢复环境变量(如果备份中包含)
cat /tmp/openclaw-env-*.txt
# 手动将需要的环境变量添加到 ~/.bashrc

# 第五步:重新加载环境变量
source ~/.bashrc

# 第六步:启动 OpenClaw
openclaw up -d

# 第七步:验证
openclaw doctor

3.2 部分恢复

如果只需要恢复特定数据:

# 只恢复配置文件
tar -xzf backup.tar.gz --include='*openclaw.json5' -C /

# 只恢复技能文件
tar -xzf backup.tar.gz --include='*skills/*' -C /

# 只恢复 MCP 配置
tar -xzf backup.tar.gz --include='*mcp/*' -C /

3.3 查看备份中的文件

在恢复前先检查备份内容:

# 列出备份中的所有文件
tar -tzf backup.tar.gz

# 查看特定文件的内容(不解压)
tar -xzf backup.tar.gz -O home/user/.config/openclaw/openclaw.json5

第四步:服务器迁移

4.1 迁移前准备

在旧服务器上:

# 创建完整备份
~/openclaw-backup-full.sh

# 记录当前版本
openclaw --version > ~/openclaw-version.txt

# 记录 Node.js 版本
node --version >> ~/openclaw-version.txt

# 导出环境变量
env | grep -E '^(OPENCLAW_|OPENAI_|ANTHROPIC_|GOOGLE_AI_|DEEPSEEK_|OPENROUTER_|TELEGRAM_|DISCORD_)' > ~/openclaw-env-export.txt

4.2 在新服务器上恢复

# 第一步:安装 Node.js 22+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs

# 第二步:安装 OpenClaw
npm install -g openclaw@latest

# 第三步:将备份传输到新服务器
scp old-server:~/openclaw-backups/openclaw-full-latest.tar.gz ~/

# 第四步:恢复数据
cd /
tar -xzf ~/openclaw-full-latest.tar.gz

# 第五步:恢复环境变量
scp old-server:~/openclaw-env-export.txt ~/
cat ~/openclaw-env-export.txt >> ~/.bashrc
source ~/.bashrc

# 第六步:运行初始化检查
openclaw doctor

# 第七步:启动服务
openclaw up -d

# 第八步:验证所有频道正常
openclaw logs

4.3 迁移后检查清单

检查项 命令 预期结果
服务状态 openclaw doctor 全部通过
配置加载 openclaw logs 无错误
模型连接 发送测试消息 正常回复
频道连接 各频道发送消息 正常收发
技能加载 openclaw skill list 显示所有技能
Dashboard 浏览器访问 正常登录
HTTPS curl -I https://your-domain 200 OK

4.4 DNS 切换

如果使用了自定义域名:

# 更新 DNS A 记录指向新服务器 IP
# 在域名服务商后台操作

# 等待 DNS 传播(通常 5-30 分钟,最长 48 小时)
# 可以用以下命令检查
dig ai.example.com +short

# 确认指向新 IP 后,在新服务器上配置 SSL
sudo certbot certonly --standalone -d ai.example.com

第五步:灾难恢复方案

5.1 3-2-1 备份规则

遵循业界标准的 3-2-1 备份规则:

  • 3 份数据副本
  • 2 种不同存储介质
  • 1 份异地备份

示例方案:

副本 1:服务器本地 ~/openclaw-backups/(每日自动)
副本 2:远程 S3 存储(每日同步)
副本 3:本地 NAS 或移动硬盘(每周手动或自动)

5.2 恢复时间预估

恢复场景 预估时间 操作
配置文件损坏 5-10 分钟 从备份恢复配置
技能文件丢失 5 分钟 从备份恢复技能目录
整个 .openclaw 丢失 15-30 分钟 恢复完整备份
服务器宕机 30-60 分钟 新服务器 + 备份恢复
数据中心故障 1-2 小时 异地恢复

5.3 快速恢复脚本

创建一个一键恢复脚本,在灾难发生时快速执行:

nano ~/openclaw-restore.sh
#!/bin/bash
# OpenClaw 一键恢复脚本

set -e

BACKUP_DIR="$HOME/openclaw-backups"

# 找到最新的备份
LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/openclaw-backup-*.tar.gz 2>/dev/null | head -1)

if [ -z "$LATEST_BACKUP" ]; then
    echo "错误:未找到备份文件"
    exit 1
fi

echo "将从以下备份恢复:"
echo "  $LATEST_BACKUP"
echo "  创建时间:$(stat -c %y "$LATEST_BACKUP" 2>/dev/null || stat -f %Sm "$LATEST_BACKUP")"
echo ""
read -p "确认恢复?(y/N) " confirm
if [ "$confirm" != "y" ]; then
    echo "已取消"
    exit 0
fi

# 停止服务
echo "停止 OpenClaw..."
openclaw restart 2>/dev/null || true

# 备份当前状态
echo "备份当前状态..."
if [ -d "$HOME/.openclaw" ]; then
    mv "$HOME/.openclaw" "$HOME/.openclaw.pre-restore.$(date +%s)"
fi
if [ -d "$HOME/.config/openclaw" ]; then
    mv "$HOME/.config/openclaw" "$HOME/.config/openclaw.pre-restore.$(date +%s)"
fi

# 恢复
echo "恢复备份数据..."
cd /
tar -xzf "$LATEST_BACKUP"

# 启动服务
echo "启动 OpenClaw..."
source ~/.bashrc
openclaw up -d

# 验证
echo "验证服务状态..."
sleep 3
openclaw doctor

echo ""
echo "恢复完成!"
chmod +x ~/openclaw-restore.sh

备份监控

检查备份是否正常执行

# 查看最新备份的时间
ls -lt ~/openclaw-backups/ | head -5

# 检查备份 cron 日志
tail -20 /var/log/openclaw-backup.log

# 验证备份文件大小(太小可能表示备份不完整)
du -sh ~/openclaw-backups/openclaw-backup-*.tar.gz | tail -5

定期恢复演练

建议每季度进行一次恢复演练,确保备份可用:

# 在测试环境中恢复
mkdir -p /tmp/openclaw-test-restore
cd /tmp/openclaw-test-restore
tar -xzf ~/openclaw-backups/openclaw-backup-latest.tar.gz
echo "恢复测试通过"
rm -rf /tmp/openclaw-test-restore

常见问题

备份文件太大

对话历史可能导致备份文件很大。解决方法:

# 仅备份核心配置,不包含对话历史
tar -czf backup.tar.gz \
    ~/.config/openclaw \
    ~/.openclaw/skills \
    ~/.openclaw/mcp \
    --exclude='*.log' \
    --exclude='conversations'

恢复后频道无法连接

通常是因为环境变量没有正确恢复。检查:

# 确认关键环境变量存在
echo $TELEGRAM_BOT_TOKEN
echo $OPENAI_API_KEY

如果为空,需要重新设置环境变量。

跨平台迁移(Linux → Linux 不同发行版)

OpenClaw 的数据是跨平台兼容的。只要 Node.js 版本一致(22+),备份文件可以在任何 Linux 发行版上恢复。

小结

数据备份是保障 OpenClaw 稳定运行的最后一道防线。核心建议:使用自动化脚本每日备份,至少保持一份异地备份,定期进行恢复演练。配置文件和技能文件是最关键的备份对象,恢复它们只需几分钟。记住 3-2-1 原则,让你的 AI 助手在任何意外情况下都能快速恢复。

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