OpenClaw备份方法
对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,只需将备份文件上传覆盖就可恢复。

