备份预览
使用 openclaw backup create 可以对小龙虾进行备份,但备份前可以看看备份位置、包含哪些文件等参数。那么就可以使用 openclaw backup create --dry-run 和 openclaw backup create --dry-run --json指令。
--dry-run
执行命令:
openclaw backup create --dry-run
执行结果:
admin@192 workspace % openclaw backup create --dry-run
🦞 OpenClaw 2026.5.7 (eeef486) — Your config is valid, your assumptions are not.
Backup archive: /Users/admin/2026-05-24T01-29-00.242Z-openclaw-backup.tar.gz
Included 1 path:
- state: ~/.openclaw
Skipped 1 path:
- workspace: ~/.openclaw/workspace (covered by ~/.openclaw)
Dry run only; archive was not written.
结果解读:
输出解读
这次 dry-run 的结果很清晰,逐项说明如下:
归档路径
Backup archive: /Users/admin/2026-05-24T01-29-00.242Z-openclaw-backup.tar.gz
默认输出在当前目录下,文件名带 ISO 时间戳。由于你没有指定 --output,所以使用了默认位置。注意此时是 dry-run,文件并未实际写入。
Included 1 path(纳入备份的源)
- state: ~/.openclaw
只纳入了一个源:状态目录 ~/.openclaw。这说明你的配置文件、凭证目录等都位于这个状态目录内部,不需要作为独立源重复包含。
Skipped 1 path(跳过的源)
- workspace: ~/.openclaw/workspace (covered by ~/.openclaw)
这是本次 dry-run 最关键的一条信息。工作区目录 ~/.openclaw/workspace 被跳过了,原因写得很清楚:它已经被 ~/.openclaw 这个状态目录覆盖了。
这完全对应文档中的说明:
"如果配置、凭证目录或工作区已经位于状态目录内部,它们不会作为单独的顶级备份源重复包含。"
换句话说,~/.openclaw/workspace 是 ~/.openclaw 的子目录,状态目录的备份已经包含了工作区的全部内容,没必要再单独列一个源。这不是 --no-include-workspace 导致的排除,而是路径去重的结果——你的工作区文件依然会被备份。
配置状态
🦞 OpenClaw 2026.5.7 (eeef486) — Your config is valid, your assumptions are not.
配置文件校验通过,所以没有触发文档中提到的"配置无效时快速失败"行为。
总结
| 项目 | 结果 |
|---|---|
| 配置是否有效 | 有效 |
| 备份源数量 | 1 个(~/.openclaw,已涵盖工作区) |
| 工作区是否被备份 | 是(作为状态目录的一部分) |
| 归档是否写入 | 否(dry-run 模式) |
| 凭证/配置是否包含 | 是(位于状态目录内) |
如果确认无误,去掉 --dry-run 即可正式创建备份。如果想要更小的归档(排除工作区),可以加上 --no-include-workspace;如果只需要配置文件副本,则用 --only-config。
--dry-run --json
执行命令:
openclaw backup create --dry-run --json
执行结果:
admin@192 workspace % openclaw backup create --dry-run --json
{
"createdAt": "2026-05-24T01:30:43.086Z",
"archiveRoot": "2026-05-24T01-30-43.086Z-openclaw-backup",
"archivePath": "/Users/admin/2026-05-24T01-30-43.086Z-openclaw-backup.tar.gz",
"dryRun": true,
"includeWorkspace": true,
"onlyConfig": false,
"verified": false,
"assets": [
{
"kind": "state",
"sourcePath": "/Users/admin/.openclaw",
"displayPath": "~/.openclaw",
"archivePath": "2026-05-24T01-30-43.086Z-openclaw-backup/payload/posix/Users/admin/.openclaw"
}
],
"skipped": [
{
"kind": "workspace",
"sourcePath": "/Users/admin/.openclaw/workspace",
"displayPath": "~/.openclaw/workspace",
"reason": "covered",
"coveredBy": "~/.openclaw"
}
]
}
结果解读:
JSON 输出逐字段解读
这条命令将 dry-run 的结果以 JSON 结构化输出,方便脚本化处理。逐项分析如下:
顶层元信息
"createdAt": "2026-05-24T01:30:43.086Z",
"archiveRoot": "2026-05-24T01-30-43.086Z-openclaw-backup",
"archivePath": "/Users/admin/2026-05-24T01-30-43.086Z-openclaw-backup.tar.gz",
"dryRun": true,
"includeWorkspace": true,
"onlyConfig": false,
"verified": false
| 字段 | 含义 |
|---|---|
createdAt |
计划创建时间(ISO 8601 UTC) |
archiveRoot |
归档内部的根目录名,用作 tarball 中的顶层文件夹 |
archivePath |
归档文件的完整输出路径,带时间戳 |
dryRun |
true,表示本次未实际写入 |
includeWorkspace |
true,工作区备份处于启用状态 |
onlyConfig |
false,未使用 --only-config 模式 |
verified |
false,未使用 --verify 模式(dry-run 下也无从验证) |
assets(备份源)
"assets": [
{
"kind": "state",
"sourcePath": "/Users/admin/.openclaw",
"displayPath": "~/.openclaw",
"archivePath": "2026-05-24T01-30-43.086Z-openclaw-backup/payload/posix/Users/admin/.openclaw"
}
]
只有一个备份源,类型为 state:
- sourcePath:归档前的原始绝对路径
-
displayPath:用
~简化显示的路径 -
archivePath:在 tarball 内部的存储路径。可以看到归档内部结构为
payload/posix/+ 原始路径,说明 OpenClaw 按平台(posix)分层组织载荷
对应文档所述:
"归档载荷会存储这些源树中的文件内容,嵌入的
manifest.json会记录解析后的绝对源路径,以及每个资产使用的归档布局。"
skipped(跳过的路径)
"skipped": [
{
"kind": "workspace",
"sourcePath": "/Users/admin/.openclaw/workspace",
"displayPath": "~/.openclaw/workspace",
"reason": "covered",
"coveredBy": "~/.openclaw"
}
]
-
reason:
"covered"— 被父源覆盖,不是被排除 -
coveredBy:
"~/.openclaw"— 说明~/.openclaw的备份已经包含了这个子目录
这与上一条非 JSON dry-run 的输出完全吻合,只是现在以结构化数据呈现。
与上一次 dry-run 的对比
| 对比项 | 非 JSON 输出 | JSON 输出 |
|---|---|---|
| 备份源 | state: ~/.openclaw |
assets[0].kind: "state" |
| 跳过原因 | (covered by ~/.openclaw) |
"reason": "covered", "coveredBy": "~/.openclaw" |
| 归档内部路径 | 未展示 | 完整展示了 tarball 内的 archivePath
|
| 配置选项状态 | 未展示 | 展示了 includeWorkspace、onlyConfig、verified
|
JSON 输出的信息量明显更大,特别适合集成到 CI/CD 流水线中做条件判断,例如:
- 检查
assets数量确认备份范围 - 检查
skipped列表确认是否有意外遗漏 - 通过
archivePath拼接后续的openclaw backup verify命令
如果准备正式执行,去掉 --dry-run 即可。