OpenClaw备份方法

AI大语言模型

对OpenClaw的数据备份,刚开始我是使用rsync将远程服务器上的整个.openclaw目录与本地同步。为了使用方便,还特意编写了一个shell脚本。当然,这个脚本也是用OpenClaw来写的:

#!/bin/bash
# ==============================================================================
#  OpenClaw 同步脚本

#  用法:
#    ./openclaw-sync.sh up    (上传: 本地 -> 远程)
#    ./openclaw-sync.sh down  (下载: 远程 -> 本地)
#
# ==============================================================================

# 远程服务器信息
REMOTE_USER="root"
REMOTE_HOST=""  # 服务器 IP 地址
# SSH 密钥文件路径
SSH_KEY=""
# 本地目录
LOCAL_DIR="./OpenClaw"
# 远程服务器路径
REMOTE_DIR="/root/.openclaw"
# 同步文件规则
SYNC_FILTERS=(
  --exclude 'sessions/'
  --exclude '/cron/runs/'
  --exclude '/workspace/.*/'
  --exclude '*.bak'
  
  --include '/openclaw.json'
  --include '/.env'
  --include '/agents/'
  --include '/agents/**'
  --include '/cron/'
  --include '/cron/**'
  --include '/memory/'
  --include '/memory/**'
  --include '/workspace/'
  --include '/workspace/**'
  
  --exclude '*'
)


# 检查是否提供了方向参数 (up 或 down)
if [ "$#" -ne 1 ]; then
    echo "❌ 错误: 参数不正确。"
    echo "用法: $0 <up|down>"
    exit 1
fi
DIRECTION=$1
# 展开 SSH 密钥路径中的波浪号 (~)
SSH_KEY_EXPANDED=$(eval echo "$SSH_KEY")
# 检查 SSH 密钥文件是否存在
if [ ! -f "$SSH_KEY_EXPANDED" ]; then
    echo "❌ 错误: SSH 密钥文件未找到: $SSH_KEY_EXPANDED"
    exit 1
fi
# 设置 rsync 命令的通用选项
# -a: 归档模式,保留文件所有属性
# -v: 详细模式,显示同步过程
# -z: 压缩传输
# --delete: 删除目标目录中源目录不存在的文件,保持完全同步
# --progress: 显示大文件的传输进度
RSYNC_OPTS=(
  -avz
  --delete
  --progress
  -e "ssh -i $SSH_KEY_EXPANDED"
  "${SYNC_FILTERS[@]}"
)
# 根据方向执行同步
case "$DIRECTION" in
  up)
    echo "🚀 开始同步: 本地 (Local) -> 远程 (Remote)"
    echo "源 (Source):      $LOCAL_DIR/"
    echo "目标 (Destination): $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
    echo "--------------------------------------------------"
    # 检查本地目录是否存在
    if [ ! -d "$LOCAL_DIR" ]; then
        echo "❌ 错误: 本地目录 '$LOCAL_DIR' 不存在。"
        exit 1
    fi
    
    # 执行上传
    rsync "${RSYNC_OPTS[@]}" "$LOCAL_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
    ;;
  down)
    echo "🛰️ 开始同步: 远程 (Remote) -> 本地 (Local)"
    echo "源 (Source):      $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
    echo "目标 (Destination): $LOCAL_DIR"
    echo "--------------------------------------------------"
    # 执行下载
    rsync "${RSYNC_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" "$LOCAL_DIR"
    ;;
  *)
    echo "❌ 错误:
 无效的参数 '$DIRECTION'。"
    echo "请使用 'up' 或 'down'。"
    exit 1
    ;;
esac
# 检查 rsync 的退出状态
if [ $? -eq 0 ]; then
    echo "✅ 同步成功!"
else
    echo "🔥 同步过程中发生错误。"
fi

使用OpenClaw备份功能

OpenClaw提供了原生备份功能,在服务器上执行:

openclaw backup create

这会在当前用户目录创建一个备份:

~# openclaw backup create

🦞 OpenClaw 2026.3.28 — Half butler, half debugger, full crustacean.

Backup archive: /root/2026-04-03T06-43-27.864Z-openclaw-backup.tar.gz
Included 1 path:
- state: ~/.openclaw
Skipped 1 path:
- workspace: ~/.openclaw/workspace (covered by ~/.openclaw)
Created /root/2026-04-03T06-43-27.864Z-openclaw-backup.tar.gz

创建并验证备份:

openclaw backup create --verify

返回信息如下:

~# openclaw backup create --verify

🦞 OpenClaw 2026.3.28 — Type the command with confidence—nature will provide the stack trace if needed.

Backup archive: /root/2026-04-03T06-59-52.459Z-openclaw-backup.tar.gz
Included 1 path:
- state: ~/.openclaw
Skipped 1 path:
- workspace: ~/.openclaw/workspace (covered by ~/.openclaw)
Created /root/2026-04-03T06-59-52.459Z-openclaw-backup.tar.gz
Archive verification: passed

验证指定的备份:

openclaw backup verify ~/2026-04-03T06-43-27.864Z-openclaw-backup.tar.gz

返回信息如下:

~# openclaw backup verify ~/2026-04-03T06-43-27.864Z-openclaw-backup.tar.gz

🦞 OpenClaw 2026.3.28 — I'm not magic—I'm just extremely persistent with retries and coping strategies.

Backup archive OK: /root/2026-04-03T06-43-27.864Z-openclaw-backup.tar.gz
Archive root: 2026-04-03T06-43-27.864Z-openclaw-backup
Created at: 2026-04-03T06:43:27.864Z
Runtime version: 2026.3.28
Assets verified: 1
Archive entries scanned: 63

仅备份配置文件:

openclaw backup create --only-config

不包含工作区文件:

openclaw backup create --no-include-workspace

备份完成后记得下载到本地:

scp root@服务器IP:/path /local/path

如果在其他服务器安装了全新的OpenClaw,只需将备份文件上传覆盖就可恢复。

AI大语言模型