跳转至

备份

你的记忆数据库是一个单独的 SQLite 文件:~/.claude-mem/claude-mem.db。 开启备份后,工作进程会按计划对其进行一致性快照 (默认每 24 小时一次),并在 ~/.claude-mem/backups/auto/ 下保留最新的 7 份。 快照会留在你的机器上。

会话运行期间拍摄快照是安全的:工作进程通过只读连接使用 SQLite 的 VACUUM INTO, 写出一个经过压缩、内容一致的副本,而不会暂停任何操作。 每份快照都是一个独立的数据库文件,在被保留前会通过 PRAGMA quick_check 检查。

Note

云同步和备份解决的是不同的问题。云同步在你工作时会将单条记忆复制到你的各个设备上。 备份是整个数据库的快照,你可以回滚到这些快照。

启用快照

在 Claude Code 中运行该技能:

/claude-mem:backup-setup

或者在查看器中开启(设置 → 备份 → 自动快照), 保存,然后重启工作进程。或者编辑 ~/.claude-mem/settings.json:

{
  "CLAUDE_MEM_BACKUP_ENABLED": "true",
  "CLAUDE_MEM_BACKUP_INTERVAL_HOURS": "24",
  "CLAUDE_MEM_BACKUP_RETAIN_COUNT": "7"
}

重启工作进程后,大约五分钟后会拍摄第一份快照。

npx claude-mem backup status   # last snapshot, count, errors, last restore
npx claude-mem backup run      # take a snapshot now
npx claude-mem backup list     # snapshots on disk

当备份已开启但最新快照早于两个间隔时,npx claude-mem doctor 也会发出警告。

恢复

npx claude-mem backup list
npx claude-mem restore <file>
npx claude-mem backup status

restore 会暂存快照并重启工作进程。新的工作进程在打开数据库之前会先将其替换, 并将被替换的数据库以 claude-mem-<timestamp>-pre-restore.db 的名称保存在同一文件夹下。 要撤销恢复,请恢复该文件。它和任何快照一样计入保留数量,因此如果你想保留更久, 请将它复制到别处。backup status 会输出结果。如果替换未能执行 (例如,另一个进程仍打开着该数据库),它会说明原因,并且工作进程继续使用原有的数据库。

该替换是崩溃安全的:在每一步中,磁盘上的数据库要么是旧的, 要么是已恢复的,且每一份都是完整的。恢复后写入的新记忆 绝不会复用被替换数据库中已有的 id。

Note

开启云同步后,恢复的数据库会从快照中保存的位置继续同步, 因此它可能会把快照之后才到达云端的更改拉回来。恢复用于修复 受损或丢失的本地数据库,而不是用于撤销已同步的更改。

设置

键 默认值 含义
CLAUDE_MEM_BACKUP_ENABLED 'false' 开启快照计划。
CLAUDE_MEM_BACKUP_INTERVAL_HOURS '24' 快照之间的间隔小时数(1 到 168)。
CLAUDE_MEM_BACKUP_RETAIN_COUNT '7' 在删除最旧快照之前保留的快照数量(1 到 100)。

常见问题

我的备份文件在哪里? 在 ~/.claude-mem/backups/auto/ 中,文件名为 claude-mem-<timestamp>.db。 每一份都是一个完整的 SQLite 数据库,你可以用任何 SQLite 工具打开。

快照是否包含向量搜索索引? 不包含。SQLite 数据库是事实来源;向量索引由它派生而来。

这会占用多少磁盘空间? 大约是你的数据库大小乘以保留数量。VACUUM INTO 会压缩每份快照, 因此它通常略小于当前使用的数据库。当可用磁盘低于数据库大小 1.2 倍加 100 MiB 时, 工作进程会跳过快照,并将其报告为最后一次错误。

备份会拖慢我的会话吗? 不会。快照在后台工作进程的只读连接上运行。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem