开启左侧

OpenClaw 数据、设置和内存备份指南

[复制链接]
米落枫 发表于 昨天 21:59 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:CSDN博客
OpenClaw 数据、设置和内存备份指南-1.png


OpenClaw 在交互时给人的感觉是“无状态的”。但实际上并非如此。它会保存配置、频道登录信息、会话记录、内存、技能以及许多在首次迁移到新服务器时至关重要的小文件。

本指南是我针对 OpenClaw 编写的实用备份清单,而非理论讲解,也不是“直接复制文件夹”之类的简单建议。目标很简单:即使你的 VPS 在凌晨 3 点宕机,你也能恢复备份,你的助手也能像什么都没发生过一样正常运行。

在深入探讨路径之前,需要说明一点:较旧的安装版本可能仍然使用.clawdbot目录,较旧的文档和脚本可能仍然使用“Moltbot”。概念本身没有改变,只是名称不同而已。

你需要用 OpenClaw 备份哪些内容

如果你只能记住这篇文章中的一件事,那就记住:OpenClaw 有两个重要的根,以及一个可选的第三个根。

1)州目录

状态目录存放着所有“底层架构”:配置、密钥、身份验证配置文件、会话和通道状态。如果丢失了状态目录,就会丢失那些难以重建的内容。

常见内容包括:

    openclaw.json(主配置)身份验证配置文件和提供商令牌(API 密钥、OAuth 令牌)每个代理的会话历史记录通道状态(例如 WhatsApp 登录信息块)像这样的配置备份.bak.*也包含机密信息。
~/.openclaw官方的 OpenClaw 迁移文档建议在迁移过程中停止网关并进行数据归档。您可以在OpenClaw 迁移文档中找到相关信息。

2) 工作区目录

你的工作区就像是“大脑文件”:记忆标记、角色规则、本地技能、辅助脚本、笔记等等。如果丢失了这些文件,OpenClaw 仍然可以启动,但它会忘记自己的身份。

典型内容包括:

    MEMORY.md和memory/文件SOUL.md,,,(如果你使用它们AGENTS.md)USER.mdTOOLS.md工作技能<workspace>/skills/<skill>/SKILL.md任何你保留的“代理上下文”信息,例如模板、清单、操作手册等。
如果您想了解内存的存储方式以及为什么它只是 Markdown,那么这篇资料是一个很好的参考阅读:OpenClaw 内存详解。

3)媒体和附件文件夹(可选,但通常值得)

如果你通过聊天渠道使用 OpenClaw,你可能会收到图片、语音留言、PDF 和其他文件,这些文件你之后可能会用到。有些人不在乎,把收到的媒体文件当作一次性用品。而有些人则非常依赖这些文件。

如果您确实依赖此功能,请备份存储入站媒体的文件夹。某些设置使用专门的“媒体备份”功能,将文件放在类似以下位置:

~/openclaw-media/<channel>/YYYY-MM-DD/...
那个文件夹里只有文件。像备份工具里的其他文件夹一样处理它就行了。

Linux、macOS 和 Windows 上的关键默认路径

根据包装和规格的不同,安装路径略有差异。不过,大多数安装路径都遵循相同的形状。

Linux 和 macOS 默认设置

    状态目录:通常~/.openclaw/工作区:通常情况下~/.openclaw/workspace,除非你更改了它
某些较旧的配置可能仍然包含~/.clawdbot自定义工作区。最稳妥的方法是打开状态目录并检查代理工作区设置,~/clawd以确认配置值。openclaw.json

Windows默认设置

在 Windows 系统中,您通常会看到以下选项之一,具体取决于系统安装的年代:

    C:\Users\<User>\.openclawC:\Users\<User>\.clawdbot(较旧)
如果您不确定数据位置,OpenClaw 的常见问题解答 (FAQ) 中有一个章节介绍了启动/停止和故障排除等基本操作。这通常是找到“此安装使用哪个文件夹”答案的最简单方法。OpenClaw常见问题解答。

最小备份与完整备份

这就是人们容易犯错的地方。他们备份了“好”的部分(工作区),却忘记了“坏”的部分(状态目录)。然后他们恢复数据,却纳闷为什么 WhatsApp 需要重新配对,会话也消失了。

最小备份范围

如果接受重新验证,那么最小备份就可以了。

    openclaw.json整个工作区目录(内存、角色文件、本地技能)
您将丢失会话历史记录,并且需要重新登录频道和进行提供商身份验证。如果您在 WhatsApp 上运行 OpenClaw 并且讨厌配对流程,那么您将无法享受最小备份带来的便利。

全面备份范围

要想真正实现“恢复并继续”的恢复,你需要的是完整备份。

    整个状态目录(配置、密钥、身份验证、会话、通道状态)整个工作区目录或目录如果您要存储收到的附件,请将其放入媒体文件夹。如果您使用外部数据库进行仪表板或会话存储,则需要生成数据库转储文件。
完整备份可以在恢复后保持用户个性、内存、会话和频道状态的完整性。

备份文件包含机密信息,因此请像对待生产环境文件一样对待它们。

状态目录以明文形式存储着密钥,包括 API 密钥、OAuth 令牌和通道会话数据。因此,您的备份集本质上就是您“王国密钥”的副本。

我的基本规则:

    对备份进行加密。状态目录备份也不例外。将密码短语存储在密码管理器中。如果丢失,备份就彻底失效了。不要通过电子邮件、Slack 或公共链接发送原始存档。如果怀疑备份数据泄露,请轮换令牌并重新配对通道。
如果您想了解 OpenClaw 的相关内容(工具访问和哪些内容属于敏感信息),我们的部署强化指南将对您有所帮助:OpenClaw 安全最佳实践。

快速导出内存和人物文件

内存文件本质上就是 Markdown 格式,所以导出它就像复制文件夹一样简单。如果你想要手动“立即获取”导出,以下是最简单的方法。

手动导出(仅内存导出)

# Adjust WORKSPACE if yours is differentWORKSPACE="$HOME/.openclaw/workspace"mkdir -p "$HOME/Desktop/openclaw-memory-backup"cp "$WORKSPACE/MEMORY.md" "$HOME/Desktop/openclaw-memory-backup/" 2>/dev/null || truecp -r "$WORKSPACE/memory" "$HOME/Desktop/openclaw-memory-backup/" 2>/dev/null || true手动导出整个工作区

WORKSPACE="$HOME/.openclaw/workspace"cp -r "$WORKSPACE" "$HOME/Desktop/openclaw-workspace-backup"
这并不能替代真正的备份。它只是“我即将编辑一堆角色规则,想要快速回滚”的一种操作。

在 Linux 和 macOS 上使用 tar 进行一键备份

如果你想要最便捷的备份方式,并且可以接受先将本地存档保存到本地,然后再同步到其他地方,那么 tar 就是一个不错的选择。

创建具有时效性的加密档案

单独使用 tar 命令并不能加密。你可以将 tar 命令与其他加密方式(例如agetrap 或 tv gpg)结合使用,并将加密结果存储在异地。

set -euo pipefailBACKUP_DIR="$HOME/backups/openclaw"DATE="$(date +%Y-%m-%d_%H-%M-%S)"STATE_DIR="$HOME/.openclaw"WORKSPACE_DIR="$HOME/.openclaw/workspace"mkdir -p "$BACKUP_DIR"tar -czf - -C "$STATE_DIR" . | age -p -o "$BACKUP_DIR/state-$DATE.tgz.age"tar -czf - -C "$WORKSPACE_DIR" . | age -p -o "$BACKUP_DIR/workspace-$DATE.tgz.age"
缺点:除非使用密钥文件,否则每次输入密码短语都会让 cron 任务变得很烦人。优点:极其简单且易于移植。

添加 cron 计划任务

crontab -e# Daily at 03:000 3 * * * /usr/local/bin/backup-openclaw.sh >/dev/null 2>&1
如果您已经在使用 OpenClaw cron 进行自动化操作,那么仍然可以通过 cron 或 systemd 定时器将备份作为“系统任务”来执行。有关 OpenClaw 内部 cron 的基础知识,请参阅:OpenClaw cron 调度器指南。

使用 Duplicati 备份 OpenClaw

Duplicati之所以受欢迎,是因为它具有跨平台性和易用性。它还支持客户端加密。Duplicati的文档涵盖了卷的加密和解密以及相关工具。Duplicati加密工具。

关于 Duplicati 的另一个细节:Duplicati 社区文档将 AES-256 加密描述为一项核心功能,并且数据在传输前会在本地进行加密。Duplicati社区文档简介。

第一步:选择源文件夹

添加您的州目录和工作区目录。

    Linux/macOS:~/.openclaw以及您的工作区路径Windows:C:\Users\<User>\.openclaw以及您的工作区路径
如果你的工作区不在目录内.openclaw,请显式添加。很多人会将工作区放在单独的磁盘上。

步骤二:设置加密并妥善保管密码短语

在 Duplicati 中,您需要在作业向导中选择加密方式。请使用 AES-256 加密。选择一个较长的随机密码短语。将其保存在您不会丢失的地方。

步骤三:安排和保留

对于大多数个人用户来说,每天更新一次就足够了。如果 OpenClaw “全天”运行且你非常依赖它,那么每 6 小时更新一次也是合理的。

留存率因人而异。我喜欢简单的模式:

    每天一次,持续7至14天每周一次,持续 4 至 8 周每月一次,持续几个月
最重要的是,你可以恢复到上周的状态。这就是“我搞砸了配置但没立刻发现”的情况。

步骤 4:尽早进行测试恢复

不要等到灾难发生那天才行动。将文件还原到临时文件夹,并确认看到以下内容:

    openclaw.jsonagents/和会话文件workspace/包含记忆和角色文件
服务器配置方面,可以使用 restic 或 Borg 进行备份。

如果你在 VPS 或家庭实验室机器上运行 OpenClaw,那么 restic 和 Borg 是常见的选择,因为它们可编写脚本且可靠。

Restic 默认使用加密,其文档描述了如何使用 scrypt 从存储库密码派生密钥,然后使用 AES-256 进行加密。restic参考资料。

如果你想深入了解密码学,Filippo Valsorda 写了一篇详细的文章,分析了 restic 的文件加密格式和先加密后 MAC 的设计。restic密码学笔记。

一个简单的 restic 示例

export RESTIC_REPOSITORY="s3:s3.amazonaws.com/your-bucket/openclaw"export RESTIC_PASSWORD="use-a-real-passphrase-here"restic backup "$HOME/.openclaw"restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 6 --prune
如果在VPS上执行此操作,请确保密码不会保存在shell历史记录中。请使用权限严格的环境变量文件或密钥管理器。

Docker 和卷备份

只要接受一个事实,Docker 设置就很简单:“重要文件夹”通常是卷。所以你需要备份卷。

您可能有:

    一卷OPENCLAW_STATE_DIR用于工作区目录的卷如果您运行的是 Postgres 或 MySQL,则需要数据库卷。
一致的快照

如果您需要一致的时间点备份,可以停止服务、创建快照,然后再重新启动服务。这样做会造成停机时间,但可以避免出现奇怪的部分备份。

如果您使用的是 ZFS 或 LVM,还可以进行文件系统快照。对于 24/7 全天候运行的服务来说,这通常是最佳方案,因为它可以在不长时间停机的情况下提供一致的视图。

数据库转储

如果您将会话或仪表板存储在 Postgres 或 MySQL 中,也请备份数据库。这通常意味着:

    pg_dump适用于Postgresmysqldump适用于 MySQL
像其他所有数据一样,对数据库转储文件进行加密。

迁移到新机器

这是大多数人关心的场景:你买了一台新的迷你电脑,或者你正在将 OpenClaw 从测试 VPS 迁移到生产 VPS。

官方迁移文档简明扼要,非常实用。文档建议停止网关并归档.openclaw工作区。OpenClaw正在迁移。

在旧机器上

# Stop the gateway so files are not changing during copyopenclaw gateway stop# Archive state dircd ~tar -czf openclaw-state.tgz .openclaw# Archive workspace (adjust if your workspace is elsewhere)tar -czf openclaw-workspace.tgz .openclaw/workspace在新机器上

请先安装 OpenClaw,然后将归档文件恢复到正确位置。

cd ~tar -xzf /path/to/openclaw-state.tgztar -xzf /path/to/openclaw-workspace.tgz
然后启动网关:

openclaw gateway startopenclaw status
核实:

    通道已连接并正在回复记忆回忆功能正常(问它一些你知道自己记得的事情)。你的技能已经非常强大了。
如果您只恢复工作区而不恢复状态目录,则需要重新验证提供程序并重新配对通道。这并非“错误”,但您应该预料到这种情况。

会话和聊天记录

会话记录保存在状态目录下,每个代理都有各自的目录。目前还没有通用的“导出会话为 JSON 并导入”按钮。因此,如果您重视会话数据,请务必备份状态目录。

一个实用技巧:如果您正在调试会话行为或想要确认恢复后会话是否存在,从 CLI 列出会话通常是最快的健全性检查。

一个不会泄露机密信息的 Git 备份方案

Git 非常适合存放个人资料文件和技能描述。但它不适合存放机密信息,也不适合快速增长的内存日志。

优秀的 Git 候选人:

    SOUL.md,,,AGENTS.md​USER.md​TOOLS.mdskills/文件夹需要版本控制的模板和参考文件
不推荐的 Git 版本:

    openclaw.json如果它包含秘密如果您在意代码库大小,则需要注意大型且频繁更改的内存文件。
我见过一种行之有效的模式:使用 Git 管理技能和角色文件,对状态目录和内存进行加密备份。这样既能获得清晰的“更改”差异,又能确保所有敏感数据都能真正恢复。

恢复运行手册,您可以将其复制到笔记中。

我喜欢简洁的流程手册,可以放在一个屏幕上显示。这是我的。

备份清单

    状态目录已包含包含工作区目录如果使用,则包含媒体文件夹如果使用,则包含数据库转储。备份已加密存在异地副本配置保留策略
恢复序列

    停止 OpenClaw 网关恢复状态目录恢复工作区目录如果使用数据库,请恢复数据库。启动 OpenClaw 网关验证通道、会话、内存、技能
一些实用的小建议,日后能帮到你。

不要将唯一的备份保存在同一块磁盘上。

这听起来显而易见,但人们仍然这样做。如果硬盘损坏,你的备份也会丢失。

明确指定工作区路径

如果您运行多个代理,请清晰命名工作区并保持其稳定。以后移动工作区是可以的,但您最终会修改配置、脚本和一些假设。

大型配置修改后请备份

OpenClaw 配置文件会随着时间推移而不断增大。添加频道、技能或代理后,请手动触发备份。虽然有点麻烦,但确实有效。


原文地址:https://blog.csdn.net/yangyin007/article/details/158571721
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )