没有一个备份手段,openclaw都不敢用,生怕下一秒就死翘翘了,所以今天我们搞定备份:
openclaw自带备份命令(没有restore指令,不完善 X)
bash
# 自动备份
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的童鞋执行以下指令:
bash
npm install -g clawhub
clawhub install "openclaw-gitbak"
配置自己的workspace和git仓库:
bash
告诉openclaw:这是我的workspace及对应的git仓库列表,请配置/openclaw-gitbak技能,然后粘贴信息
或者手工修改更快捷:~/.openclaw/skills/openclaw-gitbak/scrips/config.sh 改成你自己的就好了
执行备份:
bash
首次备份输入:/openclaw-gitbak备份所有(openclaw会记住你的备份手段)
以后备份输入:备份所有/备份workspace/备份配置
首次拉取输入:/openclaw-gitbak恢复所有(openclaw会记住你的恢复手段)
以后恢复输入:恢复所有/恢复workspace/恢复配置
这样也方便在本地修改,我这边win11,大概是这个样子:

再用2个脚本执行本地批量提交和拉取:
pull_all.ps1(注意将丢失所有修改)
bash
$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
bash
$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!"
搞定
