Files
Ant-Browser/docs/BACKUP_PACKAGE_SPEC.md
Ant Browser Release Bot f2cc3654a5 release: 1.0.0 snapshot (ea3b0e5)
channel: release
version: 1.0.0
source-ref: master
published-at-utc: 2026-03-13T13:17:53Z
2026-03-13 21:17:53 +08:00

88 lines
2.5 KiB
Markdown

# 备份包规范(第一阶段)
本文档定义“初始化/导出/加载”能力的第一阶段产物:导出范围与 ZIP 包格式契约。
## 1. 目标
- 统一导出包格式,避免后续实现出现路径、版本和兼容性歧义。
- 明确“全量内容”范围:系统配置、应用数据、内核数据、浏览器数据。
- 为后续“初始化后加载/不初始化判重加载”提供稳定输入。
## 2. ZIP 目录结构
```text
<backup>.zip
├── manifest.json
└── payload/
├── system/
│ ├── config.yaml
│ └── proxies.yaml
├── app/
│ ├── data/
│ ├── database/
│ │ ├── app.db
│ │ ├── app.db-wal
│ │ └── app.db-shm
│ └── logs/
└── browser/
├── user-data/
└── cores/
├── chrome/
└── external/<external-id>/
```
说明:
- `database/` 仅在数据库路径不被 `app/data` 覆盖时单独导出。
- `browser/user-data/` 仅在 `browser.user_data_root` 不被 `app/data` 覆盖时导出。
- `proxies.yaml``logs/``external/*` 按“存在即导出”处理。
## 3. manifest.json 结构
```json
{
"format": "ant-chrome-full-backup",
"manifestVersion": 1,
"createdAt": "2026-03-02T12:00:00Z",
"app": {
"name": "Ant Browser",
"version": "1.0.0"
},
"entries": [
{
"id": "system_config_main",
"category": "system_config",
"entryType": "file",
"required": true,
"archivePath": "payload/system/config.yaml"
}
]
}
```
字段规则:
- `format`:固定为 `ant-chrome-full-backup`
- `manifestVersion`:当前为 `1`,后续破坏性变更必须升级版本。
- `entries`:描述实际导出条目(不包含本机绝对路径)。
## 4. 范围构建规则
构建顺序:
1. 系统配置:`config.yaml``proxies.yaml`
2. 应用数据:`data/`
3. 浏览器数据:`browser.user_data_root`
4. 内核数据:`chrome/` + 配置中额外内核路径
5. 数据库补充:`app.db``-wal/-shm`
6. 日志目录:由 `logging.file_path` 推导
去重策略:
- 如果某条目已被现有目录覆盖,则跳过该条目(避免重复导出)。
- 相同源路径只保留一个条目,`required=true` 优先级更高。
## 5. 当前实现位置
- 范围与 manifest 契约:`internal/backup/spec.go`
- 单测:`internal/backup/spec_test.go`
- App 预览接口:
- `BackupGetScopeDefinition()`
- `BackupGetManifestTemplate()`