chore: 记录改造前基线

改造开始前的完整状态,作为可回退的基点。此提交之后:Pester 175 项、零依赖套件 101 项全绿;PowerShell 5.1 尚不可用(源文件无 BOM)。

包含此前未提交的在制品:安全描述符套件、Hyper-V 实验环境(tools/lab)、agent 约定(AGENTS.md 与 docs/agents)。

.gitignore 增加 *.key / *.pfx:BackupConfig.psd1 的 PasswordFile 此前默认指向仓库内的 baknret.key,一次 git add -A 就会把口令提交进版本库。默认值在后续提交中改为空。
This commit is contained in:
Shuery committed 2026-09-26 21:46:55 +08:00
1 parent 7173e8ae10
commit 2937eb6652
32 files changed
+8775 -1691

No files matched your search

+110 -87
View File
@@ -1,96 +1,119 @@
# BackupList.txt —— 备份 / 恢复共用清单
###########
# BackupList.txt —— 备份清单
###########
#
# 每一行支持**两种写法**,混用没问题:
# 语法:
# [+|-] <目标> [修饰符...] [# 说明]
#
# 1. 软件名(推荐)—— 去 SoftwareCatalog.psd1 查目录,归档名就是软件名
# FooClolor
# scoop
# Kazumi :- !*Cache
#
# 2. 用户手写的目录 —— 含 `\`、`/` 或 `%` 就按路径处理,归档名沿用 <名>_from_<路径>
# %UserProfile%\Documents\PowerShell
# C:\Programs\MiFlash :- MiFlash\logs\
#
# 3. 软件名 + @pathname —— 强制用旧的路径命名算法(归档名从路径算)
# FooClolor @pathname
#
# 两种写法都支持**追加**与**排除**:
#
# :+ 追加一个目录;写成软件名时会按名录展开成它的全部目录
# %UserProfile%\Documents\PowerShell :+ D:\backup\ps-extra
# MiFlash :+ MiFlash_Unlock
# :+ 可以出现多次、位置随意;追加进来的目录与主目录一起打进同一个归档。
#
# :- 排除模式(`::` 是它的历史别名,两者等价)
# Edge :- !*Cache,Default\Extensions
# `,` 与 `;` 都当分隔符。
#
# 行尾可以写 `# 说明` 讲清这条为什么这么配;运行时会把它和目录介绍一起打印出来:
# Edge :- !*Cache # 缓存可再生,不进归档
#
# 排除模式:相对归档根目录。以 ! 开头表示"任意层级下匹配这个组件名"(7z 的 -xr!)。
# 不要自己写引号;模式里的空格会被自动转成 ?(7z 的模式不支持空格)。
# 标记:
# encrypt 用 7z 加密该归档(口令来自 BAKNRET_PASSWORD 或 -KeyFile)
# pathname 用路径命名算法而不是软件名
# root=<名> 尚未实现(归档内根目录始终是源目录名),用了会告警
# + 仅备份,不恢复。
# - 仅恢复,不备份。
#
# 归档名 = 软件名,所以:**同一个软件不要写两遍**,脚本会直接报重复错误。
# 软件名(连同排除规则、加密标记)都维护在 SoftwareCatalog.psd1 和本文件里,
# 两边都进 git,改动可追溯。
# ---- 用户配置 / 开发环境 ----
legendary
opencode
# scoop 是一个软件名 + 对象数组(见 SoftwareCatalog.psd1):一个 scoop.7z 里
# 同时装 %UserProfile%\scoop\persist 与 %UserProfile%\.config\scoop。
scoop # scoop 各应用的持久化数据 + scoop 自身配置
# .ssh 里是私钥。想加密就把下面那行 @encrypt 的注释互换(见 README「加密」)
.ssh
CodeSpace :- Shuery-Shuai\ImmortalWrt-BPI-R4-Firmware\immortalwrt\ # 排除同一仓库里的源码树
PowerShell
WindowsPowerShell
# ---- 应用数据 ----
AutoDarkMode
Kazumi
piliplus
fnm
twinkle-tray
# ---- 浏览器:排除可再生的缓存、遥测与扩展本体 ----
# 解压后 4.22 GB / 25030 个文件里,下面这组排除会留下约 431 MB / 2164 个文件,
# 排除掉的 3.79 GB 全部可以重新生成:缓存、组件缓存、Service Worker、
# 扩展本体(可从商店重装)、遥测与优化数据。
# 书签/密码/偏好/历史,以及站点数据(IndexedDB / Local Storage)都保留。
# 想再省 230 MB,可以把 Default\IndexedDB、Default\Local Storage、
# Default\Session Storage、Default\blob_storage、Default\WebStorage 也加进来。
# !*Cache 一次覆盖 Cache / Code Cache / GPUCache / DawnCache / GrShaderCache 等一批。
# 目标(二选一):
# <SoftwareName> 软件名。查 SoftwareCatalog.psd1,归档名 = 软件名。
# <Absolute\Path> 绝对路径。含 `\`、`/` 或 `%` 时按路径处理。
#
# 注意:不带 ! 的普通模式是**相对归档根目录锚定**的(会展开成 `-x!User?Data\<模式>`),
# 所以它只排除根目录下那一份。Edge 的 OneAuth\WebView2\EBWebView\ 里还有一整套
# 自己的 Crashpad / BrowserMetrics / ProvenanceData / optimization_guide,
# 根锚定模式碰不到它们 —— 这些可再生的东西一律用 ! 形式按组件名排除(-xr!),任意层级都命中。
# 实测:根锚定的 Edge 归档 1781 MB / 27961 项 -> 改成 ! 形式后 72 MB / 2303 项,
# 书签、密码(Login Data)、Cookies、偏好、历史、IndexedDB / Local Storage 全部保留。
# 修饰符(可多个,前后必须有空格):
# :: <Absolute\Path> 覆盖 Path。同 `@ Path='<Absolute\Path>'`。
# 同一行中,:- / :+ 的模式相对覆盖后的 Path。
# :- <模式>[,...] 排除。同 `@ Exclude='<模式>'`。
# :+ <模式>[,...] 追加。同 `@ Include='<模式>'`。
# 模式为两段式:<归档内相对路径>:<宿主机绝对路径>。
# :encrypt 加密。同 `@ Encrypt='$true'`。
# :!encrypt 不加密。同 `@ Encrypt='$false'`。
# @ <Key>='<Value>' 覆盖 SoftwareCatalog 中的默认字段。
#
# 注意:Edge 常驻时打包会有上百个文件读不到(含 Login Data / Cookies),
# 脚本检测到警告后不会用这份不完整的归档覆盖已有的完整归档。备份前建议先退出 Edge。
Edge :- !*Cache,!component_crx_cache,!ProvenanceData,!optimization_guide,!Crashpad,!BrowserMetrics,Default\Service Worker,Default\Extensions,Default\ExtensionActivityEdge,Snapshots,Edge Sidebar,Edge Shopping # 下面这些全是可再生数据:缓存/组件缓存/SW/扩展本体/遥测与优化
WindowsTerminal
# 说明:
# 行尾 `# 说明` 会在运行时与目录介绍一起打印。
# 归档名 = 软件名,同一软件不要写两遍。
#
# ---------------------------------------------------------------- #
# 模式(Pattern)
# ---------------------------------------------------------------- #
#
# 「模式」是传给 7z 的排除 / 包含匹配式,匹配的是**归档内的相对路径**,
# 不是宿主机上的绝对路径。
#
# 例:Edge 的 Path 是 `%LocalAppData%\Microsoft\Edge\User Data`,
# 归档根就是 `User Data\` 内部的内容。
# 模式 `Default\Extensions` 匹配的是归档内的
# `Default\Extensions\...`,
# 而不是宿主机上的 `C:\Users\...\Edge\User Data\Default\Extensions\...`。
#
# 两种形态:
#
# <模式> 锚定在归档根。展开为 7z 的 `-x!<Path 的目录名>\<模式>`。
# 只匹配根下这一份。
#
# !<模式> 任意层级。展开为 7z 的 `-xr!<模式>`。
# 只要路径中任意一段命中,就排除。
#
# 多数情况应使用 `!` 形式:根锚定常常够不着嵌套层级里的目标。
# 例:Edge 的 `OneAuth\WebView2\EBWebView\` 里还有一整套
# Crashpad / BrowserMetrics / ProvenanceData / optimization_guide,
# 根锚定模式碰不到,必须用 `!` 形式按组件名排除。
#
# 通配符(7z 语法,非正则):
#
# * 任意多个字符(不含 `\`)。
# ? 任意单个字符。
#
# 不支持:正则、[] 字符类、{} 花括号扩展。
#
# `!*Cache` 一次覆盖:Cache / Code Cache / GPUCache / DawnCache /
# GrShaderCache 等一批以 Cache 结尾的组件名。
#
# 引号与空格:
#
# 模式里**不要自己写引号**,引号会被当成模式的一部分。
# 模式里的空格会被自动转成 `?`(7z 的 -x! 参数不接受带空格的模式)。
# 例:`Default\Service Worker` 会变成 `Default\Service?Worker`。
#
# 多个模式:
#
# 用 `,` 或 `;` 分隔,等价于给 7z 传多个 -x! / -xr! 参数。
#
# :+ 的两段式:
#
# <归档内相对路径>:<宿主机绝对路径>
# 把宿主机的目录追加到归档内的指定位置。
# 例:`D:\extra\ps-modules:Modules` → 把 D:\extra\ps-modules
# 追加到归档内 `Modules\` 位置。
#
# ---------------------------------------------------------------- #
# ---- 系统 ----
Startup
# ---- 软件名 ----
# ---- C:\Programs ----
BaiduNetdisk
FooClolor
March7thAssistant :- 3rdparty\WebBrowser\UserProfile\Integrated,March7thAssistant\logs\ # 内置浏览器的缓存与日志,可再生
MiFlash
MiFlash_Unlock
QuarkCloudDrive
translucenttb
ScoopApps-persist :- persist\ariang-native\UserData\DawnCache,persist\ariang-native\UserData\GPUCache,persist\ariang-native\UserData\Local Storage,persist\ariang-native\UserData\Session Storage # ariang 的缓存/会话数据,可再生
+ AutoDarkMode # 备份文件还在,但目前不再使用
+MicrosoftEdge
+FastNodeManager
+INZONEHub
+Kazumi
+Legendary @ Exclude='DefaultConfig\tmp' # 忽略临时文件夹
+Mnemon
+OpenCode
+OpenSSH
+PiliPlus
+PowerShell @ Encrypt='$false' # 目前无敏感文件,无需加密
+PowerToys
Scoop :- GlobalPersist\steam\steamapps # 忽略 Steam 安装的软件,可重下载
+Startup
+SteamRomManager
+TranslucentTB
+ TwinkleTray # 备份文件还在,但目前不再使用
+WindowsPowerShell :!encrypt # 目前无敏感文件,无需加密
+WindowsTerminal
# ---- 其它盘 ----
Aria
# ---- 自定义目录 ----
+ C:\Programs\BaiduNetdisk
+C:\Programs\FooColor
+C:\Programs\March7thAssistant :- '3rdparty\WebBrowser\UserProfile\Integrated,March7thAssistant\logs\' # 内置浏览器的缓存与日志,可再生
+C:\Programs\MiFlash
+C:\Programs\MiFlash_Unlock
+C:\Programs\QuarkCloudDrive
+C:\Programs\ScoopApps\persist :- 'persist\ariang-native\UserData\DawnCache,persist\ariang-native\UserData\GPUCache,persist\ariang-native\UserData\Local Storage,persist\ariang-native\UserData\Session Storage' # ariang 的缓存/会话数据,可再生
+D:\UserData\Documents\Aria
- D:\UserData\Documents\CodeSpace :- 'Shuery-Shuai\ImmortalWrt-BPI-R4-Firmware\immortalwrt' # 仅在必要时备份
-D:\Workspace # 仅在必要时备份