没有一个备份手段,openclaw都不敢用,生怕下一秒就死翘翘了,所以今天我们搞定备份:

openclaw自带备份命令(没有restore指令,不完善 X

# 自动备份
openclaw backup create
# 指定输出目录
openclaw backup create --output <path>
# 排除工作空间
openclaw backup create --no-include-workspace
# 只备份配置文件
openclaw backup create --only-config
# 预览备份计划
openclaw backup create --dry-run
# 验证备份
openclaw backup create --verify

git备份的优势是压缩文件备份没法比拟的:

git备份思路:配置和workspace分开备份,具体:

  • 在.openclaw目录创建gitrepo,添加.gitignore忽略掉workspace和相关文件,推送到配置仓库
  • 在workspace中已经由初始化的 .git 目录,映射到远程仓库,推送到workspace仓库
  • 有几个agent,就建几个仓库
  • 写脚本自动备份,代码就不贴了,已上传clawhub:
    skill地址: openclaw-gitbak
    未安装clawhub的童鞋执行以下指令:
npm install -g clawhub
clawhub install "openclaw-gitbak"

配置自己的workspace和git仓库:

告诉openclaw:这是我的workspace及对应的git仓库列表,请配置/openclaw-gitbak技能,然后粘贴信息
或者手工修改更快捷:~/.openclaw/skills/openclaw-gitbak/scrips/config.sh 改成你自己的就好了

执行备份:

首次备份输入:/openclaw-gitbak备份所有(openclaw会记住你的备份手段)
以后备份输入:备份所有/备份workspace/备份配置

首次拉取输入:/openclaw-gitbak恢复所有(openclaw会记住你的恢复手段)
以后恢复输入:恢复所有/恢复workspace/恢复配置

在这里插入图片描述

这样也方便在本地修改,我这边win11,大概是这个样子:
在这里插入图片描述

再用2个脚本执行本地批量提交和拉取:
pull_all.ps1(注意将丢失所有修改)

$count = 0
Get-ChildItem -Directory | ForEach-Object {
    $dir = $_
    if (Test-Path "$($dir.FullName)\.git") {
        $count++
        $repoName = $dir.Name
        Write-Host "==> $count Pulling $repoName"
        Push-Location $dir.FullName
        git reset --hard
        git pull
        Pop-Location
        Write-Host ""
    }
}
Write-Host "Done!"

push_all.ps1

$count = 0
$msg = Read-Host "Enter commit message"
Get-ChildItem -Directory | ForEach-Object {
    $dir = $_
    if (Test-Path "$($dir.FullName)\.git") {
        $count++
        $repoName = $dir.Name
        Write-Host "==> $count Pushing $repoName"
        Push-Location $dir.FullName
        git add .        
        git commit -m "$msg"
        git push
        Pop-Location
        Write-Host ""
    }
}
Write-Host "Done!"

搞定

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐