Files
BakNRet/CONTEXT.md
T
Shuery 3a3a57a6a1 docs: 决策记录 8 条、变更日志、README 的验收与口令两节
0007 与 0008 是本次改造新产生的决策(原计划 6 条)。它们同样满足「后人会问为什么」:把运行锁改成互斥体、或给库里 27 个函数补上 SupportsShouldProcess,都是看起来更规范的错法。

CHANGELOG.md:把 README 里那 33 行「相对旧版修了什么」整节搬过去,并补上本次改造的记录(11 条修复 + 6 条结构与规范,每条修复都写明现象与现状)。README 那一节换成指针。

README 新增两节:「验收与静态分析」(六个层次、Run-RealSmoke 为什么独立存在、以及那 6 条格式规则默认 Disabled 这个容易漏掉的事实);「口令放在哪里」(默认留空不是遗漏,附迁移与验证命令)。

.markdownlint.json 照 PowerShell 主仓库的实践(default true、行长 240),只把 MD024 从关闭改成「仅同级不重复」,因为变更日志需要重复标题。顺带按 .editorconfig 把 .md 的 BOM 去掉。
2026-09-27 10:01:54 +08:00

74 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BakNRet
一个 Windows 备份 / 恢复工具:把机器上指定的软件与目录收进归档,并能把它们放回原位。本文件是本项目的术语表——「要处理什么」「东西放在哪」这些概念在本仓库里只有一个叫法,写作与命名都照这里的词来。
## 语言
### 输入
**清单**:
备份与恢复共用的唯一声明:本次要处理哪些东西。一行一个条目。
_Avoid_: 列表、任务列表、backup list、配置
**条目**:
清单里的一行所代表的一次处理单元——一个软件名,或一个手写路径。
_Avoid_: 项、记录、任务、job
**方向**:
条目在本次运行里参不参与:仅备份、仅恢复、还是两者都做。
_Avoid_: 模式、标志、flag
**软件名录**:
「软件名 → Slot 组」的映射表。清单里写软件名时,靠它换成宿主机上的真实路径。
_Avoid_: 软件目录、路径表、catalog 配置
**Slot**:
名录里给一个软件定义的一个具名位置,决定这块内容在归档内的那一层目录名。一个软件可以有多个 Slot。
_Avoid_: 层、分组、子目录、条目
**覆盖**:
清单行里对名录默认值(路径 / 排除 / 追加 / 加密)的一次性改写。覆盖是**替换**,不是叠加。
_Avoid_: 补丁、自定义、patch
**排除模式**:
匹配**归档内相对路径**的通配表达式,用来把可再生内容挡在归档之外。`!` 打头表示任意层级匹配。
_Avoid_: 过滤规则、正则、ignore
**前缀补全**:
名录里的路径带版本后缀时的匹配规则(写的 `legendary` 对实际的 `legendary_2.0.4`)。只认 `<名>_*` 与 `<名>-*`;补全出多个候选时必须报错,不许任选一个。
_Avoid_: 模糊匹配、自动补全、glob
### 归档布局
**归档**:
一份按 Slot / 归档项布局写出的 7z 文件。软件名条目的归档名就是软件名。
_Avoid_: 包、压缩包、备份文件、zip
**归档项**:
归档内的一个顶层条目——一个 Slot 或一个追加项,各自对应宿主机上的一个路径。恢复时每一项只解出自己那棵子树。
_Avoid_: 目录项、子项、包内条目、root
**旧布局**:
重构前的归档形态:归档内顶层直接是源目录名,没有 Slot 这一层。恢复端必须仍然认得它。
_Avoid_: 老格式、v1、legacy 格式
### 产物与审计
**manifest**:
归档旁边的登记簿 `manifest.json`:每份归档的来源、状态与历史。恢复端优先靠它定位归档。
_Avoid_: 索引、记录文件、数据库
**安全描述符旁挂**:
与归档同名、放在归档旁边的安全描述符文件(属主 / 属组 / DACL)。归档格式装不下它,所以它必须跟着归档一起搬。
_Avoid_: acl 文件、附加文件、附件
**孤儿归档**:
磁盘上存在、但没有任何清单条目指向的归档。它恢复不到,所以别当垃圾删。
_Avoid_: 无用归档、残留、垃圾文件
### 名字
**BakNRet**:
本工具的名称,任何场合(文档、文件名、标识符)都一律写作 `BakNRet`。
_Avoid_: BakNRet、baknret、BakRet、BaknRet 备份工具