💾 Publish — 备份还原
v1.0.12一键将 OpenClaw 工作区完整备份到 GitHub 仓库,亦可随时回滚,自动排除敏感文件并扫描泄露密钥,保障代码与配置安全。
详细分析 ▾
运行时依赖
版本
- 扩大备份范围,纳入 `$OPENCLAW/workspace/projects/` 中的项目代码,排除凭据。 - 更新文档,阐明排除文件,尤其是 AGENTS.md 等个人/工作区特定文件及配置数据。 - 从仓库移除 `scripts/test.sh`。 - 对 `README.md`、`SKILL.md` 及 `sync.sh` 进行小幅更新,以符合新的备份/排除规则。
安装命令
点击复制技能文档
# ClawSync 将您的 OpenClaw workspace 备份并恢复到 GitHub。 ## ⚠️ 安全第一 该 skill 采用深度防御设计,请仔细阅读。 ## 它会备份什么 | 类别 | 文件 | 状态 | |----------|-------|--------| | Skills | $OPENCLAW/skills/ 下的全部文件 | 见下方说明 | | Scripts | $OPENCLAW/scripts/ 下的全部文件 | 见下方说明 | | 项目代码 | $OPENCLAW/workspace/projects/ 下的全部文件 | 排除凭据 | ### 它不会备份什么(个人/工作空间专属) 以下文件因个人或工作空间专属而被明确排除: - AGENTS.md、SOUL.md、USER.md、TOOLS.md、IDENTITY.md、HEARTBEAT.md —— 个人 agent 配置 - SITES.md —— 可能包含 API 密钥/机密 - MEMORY.md —— 包含敏感对话数据 - 任何位于 credentials/、.env、node_modules/ 中的文件 ## 它会排除什么 - ❌ API 密钥和令牌(任意格式) - ❌ 凭据文件夹 - ❌ .env 文件 - ❌ node_modules - ❌ .git 目录 - ❌ 嵌套的 git 仓库 - ❌ 包含机密的文件(通过正则检测) ## 机密检测 ClawSync 会扫描以下机密模式: - GitHub 令牌 (ghp_) - OpenAI 密钥 (sk-) - Google API 密钥 (AIza) - Slack 令牌 (xoxb-, xoxp-) - AWS 访问密钥 (AKIA) - JWT 与 bearer 令牌 - 私钥 (-----BEGIN PRIVATE KEY-----) - 高熵字符串 若检测到任何上述内容 → 在推送前中止备份。 ## 环境变量(必需) ``bash export GITHUB_TOKEN="ghp_xxxx" export BACKUP_REPO="username/repo-name" export OPENCLAW_WORKSPACE="${HOME}/openclaw-workspace" ` ### 🔐 推荐:精细化 PAT 为最小权限,请使用 GitHub 精细化 PAT: 1. 进入 GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens 2. 新建令牌并设置: - Repository access:仅 $BACKUP_REPO - Permissions:Contents: Write 3. 将该令牌用作 GITHUB_TOKEN ## 快速开始 `bash git clone https://github.com/your-username/clawsync.git ~/clawsync cp .env.example .env # 编辑 .env 填入您的值 bash sync.sh ` ## 功能 - 起飞前检查:运行前验证所需环境变量 - 严格白名单:仅复制明确允许的文件 - 黑名单:过滤掉 .git、凭据、node_modules - 机密擦除:检测 100+ 种机密模式,发现则中止 - 安全恢复:需要 --force 或确认才覆盖 ## 安全恢复 `bash # 带确认(默认) bash restore.sh # 强制模式(无提示) bash restore.sh --force ` ## 认证 优先使用 gh CLI,否则回退到令牌认证。 ## 文件 - sync.sh - 备份脚本(符合 ShellCheck) - restore.sh - 恢复脚本 - .env_example - 模板 - .gitignore - 阻止机密 ## 开发与发布 ### 本地运行测试 `bash # 设置测试工作空间 mkdir -p /tmp/test-workspace echo "test" > /tmp/test-workspace/AGENTS.md echo "test" > /tmp/test-workspace/USER.md mkdir -p /tmp/test-workspace/skills /tmp/test-workspace/scripts # 运行集成测试 export BACKUP_REPO="test/repo" export OPENCLAW_WORKSPACE="/tmp/test-workspace" export GITHUB_TOKEN="dummy" cd /tmp && rm -rf test-backup-repo && mkdir test-backup-repo cd test-backup-repo && git init cp ~/clawsync/sync.sh . bash sync.sh ` ### 测试机密检测 `bash # 创建一个带假机密的测试文件 echo "My API key is ghp_test1234567890abcdefghijklmnopqrstuvwxyz" > /tmp/test-workspace/AGENTS.md # 运行同步 - 应报错中止 bash sync.sh # 预期输出:"Error: Potential secret detected..." ` ### 安全审计测试(证明非暂存检测) 此测试验证脚本在文件被 staging 前就能捕获机密: `bash # 设置测试工作空间 export BACKUP_REPO="test/repo" export OPENCLAW_WORKSPACE="/tmp/test-workspace" export GITHUB_TOKEN="dummy" # 在工作空间创建带机密的文件 mkdir -p /tmp/test-workspace echo "Real API key: sk-realapikey12345678901234567890" > /tmp/test-workspace/AGENTS.md # 复制 sync.sh 到临时备份目录 cd /tmp && rm -rf audit-test && mkdir audit-test && cd audit-test git init cp ~/clawsync/sync.sh . # 运行同步 - 应失败(捕获未 staging 的机密) bash sync.sh # 预期:"Error: Potential secret detected in backup directory!" # 这证明 pre-git-add 扫描有效 ` ### 发布到 ClawHub CI 会在每次 push 与 pull request 时运行: 1. ShellCheck - 检查 bash 脚本 2. 集成测试 - 验证备份/恢复功能 要发布新版本: `bash git add -A git commit -m "Release v1.0.x" git tag v1.0.x git push origin master --tags ` CI 将自动: - 运行测试 - 若测试通过且 tag 以 v` 开头,则发布到 ClawHub