跳到主要内容

备份与恢复

Anyy 可以创建和列出 profile-home backup archives。恢复目前是手动操作:没有 anyy backup restore 命令。

在迁移 profile、调整 host storage、测试高风险配置变更或手动处理 state 前,先创建备份。

Backup 覆盖什么

anyy backup create 会归档 resolved Anyy home 下的 regular files。每个 archive 包含 manifest.json 和 regular profile files。

有 state database 时,SQLite state 会通过 SQLite backup logic 复制。SQLite sidecar files,如 WAL/SHM/journal,会被排除。目录本身不会作为 standalone entries 归档。

Profile secrets 默认排除。

创建备份

在 profile 的 backups/ 目录创建备份:

anyy backup create

指定输出路径:

anyy backup create --output /secure/backups/anyy.tar.gz

只有当 archive 会作为敏感 credential material 保存和传输时,才包含 secrets:

anyy backup create --include-secrets

自动化场景:

anyy backup create --json

检查备份内容

列出 profile backup 目录中的 archives:

anyy backup list
anyy backup list --json

用标准 tar 工具检查 archive:

tar -tzf /secure/backups/anyy.tar.gz | head
tar -xOf /secure/backups/anyy.tar.gz manifest.json

Manifest 会列出 archived files,并说明 secrets 是否被排除。

手动恢复

替换文件前先停止 gateway:

anyy gateway stop

先解压到临时目录:

mkdir -p /tmp/anyy-restore
tar -xzf /secure/backups/anyy.tar.gz -C /tmp/anyy-restore

检查恢复出来的目录后,再把文件复制到目标 Anyy home,并确保 owner 和权限适合运行 service 的用户。

如果备份排除了 secrets,需要在启动 gateway 前重新创建或复制必需的 secrets/ entries。Config 可以引用 secret: refs,但缺失 secret files 会导致 runtime failures。

恢复后验证

anyy doctor
anyy config
anyy gateway start
anyy status

对已经配置的 channels 和 MCP servers,再运行定向检查:

anyy channels doctor telegram
anyy mcp status

然后发送一条真实 chat 或平台消息。只有 runtime 能读取 config、连接 model backend,并通过你依赖的 channel 投递后,restore 才算验证完成。

排除内容

  • Profile secrets,除非设置了 --include-secrets
  • 当目标 archive 位于 Anyy home 内时,排除 archive 自身。
  • SQLite sidecar files:.db-wal.db-shm.db-journal,以及等价的 -wal-shm-journal suffixes。
  • 目录本身作为 standalone entries。
  • Non-regular files。

安全注意事项

  • --include-secrets 的 archive 应视为 credential material。
  • 恢复时优先停止 gateway。
  • 保留原 home directory,直到 doctorconfig 和真实消息或 chat 测试通过。
  • 除非明确要合并 profile,不要混用不同 profile 的文件。
  • 明确使用 --home--profile,确保备份的是目标 profile。