Skip to content

feat(backup): 新增备份内容浏览#90

Merged
Awuqing merged 1 commit into
mainfrom
feat/backup-content-browse
May 27, 2026
Merged

feat(backup): 新增备份内容浏览#90
Awuqing merged 1 commit into
mainfrom
feat/backup-content-browse

Conversation

@Awuqing

@Awuqing Awuqing commented May 27, 2026

Copy link
Copy Markdown
Owner

背景

此前只能整体下载或恢复一个备份,无法查看里面到底有哪些文件。运维常需核对「昨晚的备份是否真的包含 /etc/nginx」「某目录是否被排除规则误伤」,却没有手段——只能盲信。本 PR 补齐「浏览备份内容」这一基础能力。

实现(零额外开销)

直接复用差异备份新增的清单机制——所有文件类型的新全量备份都会记录条目清单(路径/大小/目录),因此浏览无需下载或解压归档,秒级返回。

  • BackupRecordService.ListContents:解析记录清单为内容视图;差异记录回退到其基线全量清单(近似展示恢复后结构);超 1 万条标记截断;无清单(老备份/数据库类型)时返回明确提示。
  • GET /backup/records/:id/contents:只读,viewer 角色亦可访问。
  • 前端:备份记录详情新增「查看内容」按钮,弹窗以可按路径筛选的表格展示文件与大小。

安全

只读、零文件系统写入;路径仅用于展示与前端筛选,不参与任何文件操作 → 无路径穿越/注入面。

测试

  • go test ./internal/service ./internal/http 通过;tsc --noEmit 通过

说明

  • 仅文件类型的全量备份记录清单(本能力上线后产生的备份);更早的备份会提示「重新执行一次全量备份后可浏览」。
  • 这是「选择性恢复(按需恢复单个文件)」的基础,后续可在此之上增加勾选恢复。

可查看每次备份实际捕获了哪些文件(路径、大小、目录),用于核对备份完整性、
排查遗漏,无需下载/解压归档——清单直接取自全量备份记录,秒级展示并支持按路径筛选。

- service:BackupRecordService.ListContents 解析记录清单为内容视图;
  差异记录回退到其基线全量清单;上限 1 万条并标记截断;无清单时给出明确提示
- http:GET /backup/records/:id/contents(只读,viewer 亦可访问)
- 前端:备份记录详情新增「查看内容」,弹窗以可筛选表格展示文件清单

与差异备份的清单机制天然协同:所有文件类型的新全量备份均自动可浏览。
go test 通过;tsc --noEmit 通过。
@Awuqing Awuqing merged commit 68bb964 into main May 27, 2026
6 checks passed
@Awuqing Awuqing deleted the feat/backup-content-browse branch May 27, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant