用途与实际影响
这项功能怎样使用
为什么需要它
安装包和插件大多还能重下,私人设置、密钥和终端连接记录更难重建。清单优先保留这些材料;它是供换机时逐项选择的包,不是一键覆盖新电脑。
举个实际例子
我说“重装时别把十几 G 插件都打进去,但密钥和设置不要漏”:清单保留难重建资产、导出可重装软件列表;重要来源不可读时直接失败,可选来源未安装则明确记缺席。
最后我会得到什么
得到带日期和完整性清单的配置包、要重新安装的软件列表,以及哪些来源没有收入。包可能包含凭据,只能保存在可信介质;恢复前按清单确认所选副本的来源范围。
正常时
清单列出的必需配置都能读取,排除的安装本体、插件和缓存没有混入;采集结束再次核对来源范围和逐文件完整性后,才交回可选择恢复的这一代配置包与软件补齐清单。
发现问题时
必需来源在采集中消失、读不稳或结束时来源集合发生变化,就说明本轮缺什么并停止发布;文件读完后又被应用修改会单列说明,不能称整包来自同一时点。
入口不可用或证据不足时
必需磁盘或软件配置不可读、包或清单无法核对时,保留上次成功包并说明本轮不能形成新版本;可选软件未安装则记录缺席,不用空目录冒充已经备份。
从哪里开始
在已接入的 AI 对话中说明要保护哪些难重建设置,要求检查 DevConfig 清单;日常由备份任务按清单执行。
需要准备什么
- 要保留的软件设置或密钥类别
- 是否需要换机恢复
从开始到拿到结果
- 1
确定真正要留什么
系统按来源清单选配置、私钥和导出清单,排除可重下的大型安装物和缓存。
- 2
形成可核对的恢复包
重要来源缺失就不发布本轮;成功包附文件清单和完整性校验,便于换机时确认拿到的是同一份材料。
- 3
拿到选择依据
交回哪些资料已被这代包含、哪些没包含;恢复时按需取用,不把包直接整机覆盖。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
9月24日本地/G配置包同代2,870,143,084字节;旧9月18日包验真仍是历史,应用恢复另验关键规则与设计选择
当前本地/G成功包为2,870,143,084字节;9月18日旧包隔离恢复曾解出8,640文件共8,531,705,353字节并逐文件核对,不能拿旧恢复验收证明新包恢复通过。压缩包、解包范围与应用恢复分别说明。
PowerToys 只取 AppData\Local 下 1.3 MB 的设置,坚决不取 843 MB 的安装本体。
JetBrains 剔除 10.6 GB 的 plugins 与 jdbc-drivers 目录,通过导出 txt 清单实现重装自动下载。
Docker 仅备份 CLI(命令行工具) config.json 与 Desktop 偏好,坚决排除动辄几十 GB 的 docker_data.vhdx 磁盘镜像。
FinalShell 只取 conn\ 会话,PixPin 只取 Config 剔除截图历史,Clash 剔除 34 MB 规则数据库。
AI 聊天历史(如 .claude\projects)默认排除,仅在指定 -IncludeHistory 时追加打包。
实际备份包包含部分明文凭据和不可轮换的 GPG 私钥;它与公开脚本仓库是两件事,恢复和介质保护要按材料类型处理。
提交前由 Assert-NoBackupArtifacts.ps1 扫描 Git 文件候选的目录、扩展名和已知数据库路径;它不替代对任意源码正文的秘密检查。
本模块用到的名词
- Data-Driven Manifest(数据驱动清单)
- 配置规则与代码逻辑解耦,增删备份项只需修改 psd1 数据文件,不动任何执行脚本。
- Signal-to-Noise Ratio(高信噪比备份)
- 优先剔除可重建的大体积二进制与缓存,同时允许真实恢复状态随使用增长;目标不是永远维持某个包体数字。
- Public Artifact Gate(公开制品门)
- 提交前检查 Git 文件候选的已知备份目录、归档扩展名和微信数据库路径;更广的公开正文检查由网站发布门单独完成。
专业定义
安装包、插件和缓存可以再下载;配置与恢复状态按必需/可选清单采集,缺重要来源就不发一个假完整包。
解决什么
防止将数十 GB 的 node_modules、浏览器缓存、软件本体与 Docker 磁盘镜像打进备份包,并防止把明文 API Key 与私钥误提交至开源仓库。
当前怎样实现
- sources.psd1 声明采集与排除范围,区分必需和可选源;每个文件最多三次有界稳定读取,结束时核对源路径集合,记录 changed_after_capture_count,不承诺全应用同一时点。
- Backup-DevConfig.ps1 现生成 env-user.reg, env-machine.reg 与 path-machine.txt 注册表导出。
- 通过 netsh wlan export profile 自动导出全部 Wi-Fi 配置文件(含密码 XML)。
- _manifests 目录现场执行 scoop export, winget export 与 code --list-extensions 生成软件补齐清单。
- tests/Assert-DockerScope.ps1 验证 Docker 采集只引用 allowlist(允许清单)的配置文件与 contexts,不递归收整个数据树。
执行流程
- 1
Backup-DevConfig.ps1 读取 sources.psd1,初始化 staging 临时目录。
- 2
逐项采集用户根目录散件、SSH 会话、GPG 私钥与各 AI 工具设置。
- 3
实时执行注册表导出、计划任务 XML 复制与包管理器软件清单导出。
- 4
robocopy 带 /XD 与 /XF 参数执行严格黑名单过滤,过滤缓存与日志。
- 5
7-Zip 检测、文件清单与成功回执闭合后才发布 current(当前状态);独立候选失败不更新指针,不因漏采把旧成功包删掉。
边界
- 严格禁止把软件安装目录、IDE 插件二进制包、缓存与 node_modules 打进备份。
- 严格禁止 Docker Desktop 的 VHDX 磁盘镜像、容器层与运行态进入配置包。
- 真实备份包可能含明文凭据,但不得进入 Git;不可轮换的 GPG 私钥需要比普通可轮换 token 更谨慎地选择加密与介质。
失败与恢复
- sources.psd1 存在语法错误或非 UTF-8 BOM 编码
- PowerShell 5.1 无法解析时本轮采集停止;先修复数据文件,再重新生成包。
- Git 暂存区中误加入了备份 zip、reg 或敏感数据库文件
- Assert-NoBackupArtifacts.ps1 门禁测试失败,阻断任何提交与发布流程。
- Docker Desktop 正在生成新的大文件或临时日志
- 采集只读取明确列出的 CLI(命令行工具)/Desktop 小配置和 contexts,不递归收整个 Docker 数据树。
真实入口
sources.psd1纯数据驱动的备份源清单与排除黑名单
_manifests/包管理器与编辑器插件导出清单目录
tests/Assert-NoBackupArtifacts.ps1提交前严查防泄密与备份产物过滤的机械安全门禁
tests/Assert-DockerScope.ps1Docker 配置范围严格限定自动化断言测试
如何验证
- tests/Assert-NoBackupArtifacts.ps1 PASS,证明 Git 文件候选没有落入已知备份目录、归档/密钥容器扩展名或微信数据库路径;不证明任意文本内容零秘密。
- tests/Assert-DockerScope.ps1 验证 Docker 只走 allowlist(允许清单),不收整个 .docker 或 Docker Desktop 树。
- 9 月 18 日来源曾用当时配置包做独立目标解包与全树哈希核对;9月24日新包仅由生产回执确认,本轮没有再解包或读取其中私人内容。
与其他模块的关系
它是备份内容的决策中枢:明显可重建的安装本体和缓存不收,真正影响恢复的配置、凭据和状态进入候选包;恢复者再按版本与兼容性挑选。
