备份与恢复
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、-journalsuffixes。 - 目录本身作为 standalone entries。
- Non-regular files。
安全注意事项
- 带
--include-secrets的 archive 应视为 credential material。 - 恢复时优先停止 gateway。
- 保留原 home directory,直到
doctor、config和真实消息或 chat 测试通过。 - 除非明确要合并 profile,不要混用不同 profile 的文件。
- 明确使用
--home或--profile,确保备份的是目标 profile。