关于 myclaw-backup
MyClaw Backup 是用于 OpenClaw 的备份与恢复技能,面向迁移或保护 OpenClaw 实例数据的用户。它将关键数据打包为 `.tar.gz`,并提供带令牌保护的 HTTP 管理界面及定时备份脚本。
主要功能
- 01打包关键 OpenClaw 数据
- 02从归档恢复并支持演练
- 03通过 HTTP 管理备份归档
- 04按计划自动执行备份
适用场景
- 01迁移到新的 OpenClaw 实例
- 02恢复配置、凭据和会话历史
- 03定期创建 OpenClaw 备份
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ leoyeai/ openclaw-backup --skill myclaw-backup安装后在 Claude Code 中输入/myclaw-backup确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.it.mdREADME.zh-CN.mdREADME.mdREADME.ru.mdREADME.es.mdREADME.ja.mdREADME.de.md.gitignoreLICENSEREADME.fr.mdopenclaw-backup.skillreferences/what-gets-saved.mdscripts/backup.shschedule.shserve.shserver.jsrestore.shui.html详细介绍
MyClaw 备份
基于 MyClaw.ai 构建 — 这是一款 AI 个人助手平台,为每位用户提供一台完整服务器,并支持完整的代码控制、网络连接和工具访问。此技能是 MyClaw.ai 开放技能生态的一部分。
将所有关键 OpenClaw 数据备份到单个 .tar.gz 压缩包,并可将其恢复到任意 OpenClaw 实例。内置 HTTP 服务,可通过浏览器管理备份。
⚠️ 信任边界与安全模型
此技能会处理高度敏感的数据:机器人令牌、API 密钥、频道凭据、会话历史。使用前请了解安全模型:
各脚本的作用
- backup.sh — 读取
~/.openclaw/,并在磁盘上写入一个权限为chmod 600的压缩包。不访问网络。 - restore.sh — 根据压缩包覆盖
~/.openclaw/。需要输入yes确认。务必先运行--dry-run。 - serve.sh / server.js — 启动本地 HTTP 服务。必须提供令牌(未提供时会拒绝启动)。Shell 执行端点(
/backup、/restore)仅限 localhost 访问——远程访问只能下载和上传文件,不能触发执行。 - schedule.sh — 修改系统 crontab,按计划运行 backup.sh。添加前会显示 cron 条目。使用
--disable移除。
访问控制摘要
| 端点 | 远程访问(需要令牌) | 仅限 localhost |
|---|---|---|
| GET /health | ✅(无需令牌) | — |
| GET /backups | ✅ | — |
| GET /download/:file | ✅ | — |
| POST /upload | ✅ | — |
| POST /backup | ❌ | ✅ |
| POST /restore | ❌ | ✅ |
最佳实践
- 启动 HTTP 服务时,绝不要省略
--token - 未配置 TLS 时,绝不要将 HTTP 服务暴露到公共互联网
- 执行恢复前,务必先运行
restore.sh --dry-run - 安全存储备份压缩包——其中包含所有凭据
依赖项
需要:node、rsync、tar、python3、openclaw CLI(OpenClaw 实例上通常都已安装)。
检查:which node rsync tar python3 openclaw
脚本
| 脚本 | 用途 |
|---|---|
scripts/backup.sh [output-dir] | 创建备份(默认:/tmp/openclaw-backups/) |
scripts/restore.sh <archive> [--dry-run] [--overwrite-gateway-token] | 恢复——务必先运行 dry-run |
scripts/serve.sh start --token TOKEN [--port 7373] | 启动 HTTP 服务——必须提供令牌 |
scripts/serve.sh stop|status | 停止/检查服务 |
scripts/schedule.sh [--interval daily|weekly|hourly] | 系统 cron 定时任务 |
网关令牌行为(v1.6+): 默认情况下,
restore.sh在恢复openclaw.json后会保留新服务器的gateway.auth.token。这样可避免迁移后在 Control UI / Dashboard 中出现"gateway token mismatch"错误。仅在同一服务器上进行完整灾难恢复时,才使用--overwrite-gateway-token。
备份内容
完整详情请参阅 references/what-gets-saved.md。
包含: 工作区(MEMORY.md、技能、Agent 文件)、openclaw.json(机器人令牌 + API 密钥)、凭据、频道配对状态、Agent 配置 + 会话历史、设备、身份、cron 作业、guardian 脚本。
不包含: 日志、二进制媒体、node_modules、canvas 系统文件。
常见工作流
创建备份
bash scripts/backup.sh /tmp/openclaw-backups
# → /tmp/openclaw-backups/openclaw-backup_TIMESTAMP.tar.gz (chmod 600)
恢复——务必先运行 dry-run
# Step 1: preview what will change
bash scripts/restore.sh openclaw-backup_TIMESTAMP.tar.gz --dry-run
# Step 2: review the output, then apply
bash scripts/restore.sh openclaw-backup_TIMESTAMP.tar.gz
恢复脚本会在覆盖任何内容之前保存恢复前快照。
HTTP 服务——必须提供令牌
# Token is required — server refuses to start without one
bash scripts/serve.sh start --token $(openssl rand -hex 16) --port 7373
# → http://localhost:7373/?token=<generated-token>
未配置反向代理 + TLS 时,绝不要在公共网络上分享此 URL。
Web UI 提供以下功能:创建备份、下载 .tar.gz、上传、dry-run 预览、恢复。
HTTP API(除 /health 外均需要令牌):
GET /health— 健康检查(无需身份验证,只读)GET /backups— 列出备份POST /backup— 创建备份GET /download/:filename— 下载压缩包POST /upload— 上传压缩包(multipart,字段:backup)POST /restore/:filename— 恢复;添加?dry_run=1可预览
迁移到新实例
旧机器:
bash scripts/serve.sh start --token MYTOKEN --port 7373
新机器(安装 OpenClaw 后):
# Download
curl -O "http://OLD_IP:7373/download/openclaw-backup_TIMESTAMP.tar.gz?token=MYTOKEN"
# Always dry-run first
bash scripts/restore.sh openclaw-backup_TIMESTAMP.tar.gz --dry-run
# Apply
bash scripts/restore.sh openclaw-backup_TIMESTAMP.tar.gz
# All channels reconnect automatically — no re-pairing needed
安排每日自动备份(OpenClaw cron)
{
"name": "daily-openclaw-backup",
"schedule": { "kind": "cron", "expr": "0 3 * * *", "tz": "UTC" },
"payload": {
"kind": "agentTurn",
"message": "Run a backup using the myclaw-backup skill. Output dir: /tmp/openclaw-backups",
"timeoutSeconds": 120
},
"sessionTarget": "isolated"
}
恢复后:自动恢复报告
restore.sh 完成后,会写入 workspace/.restore-complete.json。在下一次心跳/启动时,Agent 应:
- 检查
workspace/.restore-complete.json是否存在 - 如果存在:读取文件,向用户发送恢复报告,然后删除该文件(一次性操作——绝不重复报告)
- 使用用户的主要语言发送报告(从
workspace/USER.md读取)
报告格式(根据 USER.md 调整语言)
✅ [Restore complete — in user's language]
📦 Backup: {backup_name}
🤖 Agent: {agent_name}
🕐 Restored at: {restored_at}
💾 Contents restored: workspace, config, credentials, history, cron...
[Channel reconnect instructions in user's language]
未来:MyClaw 云备份
HTTP API 的设计与未来的 MyClaw 云备份服务兼容。服务可用后,将本地服务器 URL 替换为 MyClaw API 端点即可——上传/下载/恢复流程保持不变。