引入软件名录:清单写软件名,归档名也用软件名
新功能 - 新增 SoftwareCatalog.psd1 —— "软件名 -> 目录"映射表,BackupList.txt 里 直接写软件名即可,归档名也就是软件名(FooClolor.7z), 不再是 FooClolor_from_C_+Programs.7z 这种由路径拼出来的名字。 - 三种写法可混用:软件名、字面路径(现有清单无需改写)、软件名 @pathname。 - 名录支持前缀补全(legendary -> legendary_2.0.4,只认 <名>_* / <名>-*)、 Variants(同名目录在多处)、Includes(分文件维护)。 - tools/Rename-Archives.ps1:存量归档重命名,默认试运行,逐份大小校验并重建 manifest。 - 归档名重复直接报错,不再静默互相覆盖。 两套测试全绿:单元 42 项、端到端 23 项(新增名录命名/解析/迁移用例)。 过程中修掉的缺陷 - Resolve-BackupEntry 里 @pathname 与 Unresolved 分支顺序错误, @pathname 会被静默吃掉(改名后仍用软件名)。 - 源目录被删除时解析器丢掉 Sources,导致恢复端把软件名当路径、 报 "Cannot bind argument to parameter 'Path' because it is an empty string"。 恢复的语义恰恰是"源不存在就要还原回去",现在 Sources 照旧给出。 - 源存在性检查曾被漏掉,Get-Item 对不存在路径抛异常会中断整轮备份; 且不能用 Join-Path 探测——目标盘符不存在时它会直接抛异常。 - 计划任务脚本外的 Caller 需要 -DryRun 才能验,已实跑确认。
This commit is contained in:
1 parent
dbc0c00554
commit
045d51ac9c
9 files changed
+1330
-143
No files matched your search
+54
-44
@@ -1,37 +1,49 @@
|
||||
# BackupList.txt —— 备份 / 恢复共用清单
|
||||
#
|
||||
# 语法:
|
||||
# <路径> [ :: <排除模式>[,<排除模式>...] ] [ @<标记> ]
|
||||
# <软件名 或 路径> [ :: <排除模式>[,<排除模式>...] ] [ @<标记> ]
|
||||
#
|
||||
# 路径 :支持 %环境变量%;可用双引号包裹(引号只包路径);/ 与 \ 等价。
|
||||
# 排除模式 :相对归档根目录(也就是源目录的末级名)。
|
||||
# 以 ! 开头表示"任意层级下匹配这个组件名",翻译成 7z 的 -xr!。
|
||||
# 不要自己写引号;7z 的模式不支持空格,工具会自动把空格转成 ?。
|
||||
# 标记 :encrypt = 用 7z 加密这个归档(口令来自 BAKNRET_PASSWORD 或 -KeyFile)。
|
||||
# 三种写法都可以,混用也没问题:
|
||||
#
|
||||
# 注意:
|
||||
# * 归档名由 <末级名>_from_<上级路径用 + 连接> 生成。改动路径会生成新归档名,
|
||||
# 旧归档不会被自动迁移,恢复时请用 manifest.json 或保留原写法。
|
||||
# * 源路径不存在的条目会明确报告为「跳过: 路径不存在」,不再静默忽略。
|
||||
# * 对已经不存在、但归档还在的条目,保留在这里可以继续恢复出历史数据。
|
||||
# 1. 软件名(推荐)—— 去 SoftwareCatalog.psd1 里查目录,归档名就是软件名
|
||||
# FooClolor
|
||||
# Kazumi :: !*Cache
|
||||
#
|
||||
# 2. 字面路径 —— 含 `\`、`/` 或 `%` 就按路径处理,归档名沿用 <名>_from_<路径>
|
||||
# %UserProfile%\Documents\PowerShell
|
||||
# C:\Programs\MiFlash
|
||||
#
|
||||
# 3. 软件名 + @pathname —— 强制用旧的路径命名算法
|
||||
# FooClolor @pathname
|
||||
#
|
||||
# 排除模式:相对归档根目录。以 ! 开头表示"任意层级下匹配这个组件名"(7z 的 -xr!)。
|
||||
# 不要自己写引号;模式里的空格会被自动转成 ?(7z 的模式不支持空格)。
|
||||
# 标记:
|
||||
# encrypt 用 7z 加密该归档(口令来自 BAKNRET_PASSWORD 或 -KeyFile)
|
||||
# pathname 用路径命名算法而不是软件名
|
||||
# root=<名> 覆盖归档内的根目录名(默认就是软件名)
|
||||
#
|
||||
# 归档名 = 软件名,所以:**同一个软件不要写两遍**,脚本会直接报重复错误。
|
||||
# 软件名(连同排除规则、加密标记)都维护在 SoftwareCatalog.psd1 和本文件里,
|
||||
# 两边都进 git,改动可追溯。
|
||||
|
||||
# ---- 用户配置 / 开发环境 ----
|
||||
%UserProfile%/.config/legendary
|
||||
%UserProfile%/.config/scoop
|
||||
%UserProfile%/.ssh
|
||||
# 想加密 .ssh(内含私钥)就改成下面这行,并先配置好口令,见 README「加密」一节:
|
||||
# %UserProfile%/.ssh @encrypt
|
||||
%UserProfile%\Documents\CodeSpace :: Shuery-Shuai\ImmortalWrt-BPI-R4-Firmware\immortalwrt\
|
||||
%UserProfile%\Documents\PowerShell
|
||||
%UserProfile%\Documents\WindowsPowerShell
|
||||
%UserProfile%/scoop/persist
|
||||
legendary
|
||||
opencode
|
||||
scoop-config
|
||||
# .ssh 里是私钥。想加密就把下面那行 @encrypt 的注释互换(见 README「加密」)
|
||||
.ssh
|
||||
CodeSpace :: Shuery-Shuai\ImmortalWrt-BPI-R4-Firmware\immortalwrt\
|
||||
PowerShell
|
||||
WindowsPowerShell
|
||||
scoop-persist
|
||||
|
||||
# ---- 应用数据 ----
|
||||
%AppData%\AutoDarkMode
|
||||
%AppData%/com.example/Kazumi
|
||||
%AppData%/com.example/piliplus
|
||||
%AppData%\fnm
|
||||
%AppData%/twinkle-tray
|
||||
AutoDarkMode
|
||||
Kazumi
|
||||
piliplus
|
||||
fnm
|
||||
twinkle-tray
|
||||
|
||||
# ---- 浏览器:排除可再生的缓存、遥测与扩展本体 ----
|
||||
# 解压后 4.22 GB / 25030 个文件里,下面这组排除会留下约 431 MB / 2164 个文件,
|
||||
@@ -39,28 +51,26 @@
|
||||
# 扩展本体(可从商店重装)、遥测与优化数据。
|
||||
# 书签/密码/偏好/历史,以及站点数据(IndexedDB / Local Storage)都保留。
|
||||
# 想再省 230 MB,可以把 Default\IndexedDB、Default\Local Storage、
|
||||
# Default\Session Storage、Default\blob_storage、Default\WebStorage 也加进排除表。
|
||||
# !*Cache 表示"任意层级下以 Cache 结尾的目录",能一次覆盖 Cache / Code Cache /
|
||||
# GPUCache / DawnCache / GrShaderCache / ShaderCache 等一批。模式里的空格会被
|
||||
# 自动转成 ?(7z 的排除模式不支持空格)。
|
||||
%LocalAppData%\Microsoft\Edge\User Data :: !*Cache,component_crx_cache,Default\Service Worker,Default\Extensions,Default\ExtensionActivityEdge,ProvenanceData,optimization_guide,Crashpad,BrowserMetrics,Snapshots,Edge Sidebar,Edge Shopping
|
||||
%LocalAppData%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
|
||||
# Default\Session Storage、Default\blob_storage、Default\WebStorage 也加进来。
|
||||
# !*Cache 一次覆盖 Cache / Code Cache / GPUCache / DawnCache / GrShaderCache 等一批。
|
||||
#
|
||||
# 注意:Edge 常驻时打包会有上百个文件读不到(含 Login Data / Cookies),
|
||||
# 脚本检测到警告后不会用这份不完整的归档覆盖已有的完整归档。备份前建议先退出 Edge。
|
||||
Edge :: !*Cache,component_crx_cache,Default\Service Worker,Default\Extensions,Default\ExtensionActivityEdge,ProvenanceData,optimization_guide,Crashpad,BrowserMetrics,Snapshots,Edge Sidebar,Edge Shopping
|
||||
WindowsTerminal
|
||||
|
||||
# ---- 系统 ----
|
||||
%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
|
||||
Startup
|
||||
|
||||
# ---- C:\Programs ----
|
||||
C:\Programs\BaiduNetdisk
|
||||
C:\Programs\FooClolor
|
||||
C:\Programs\March7thAssistant :: 3rdparty\WebBrowser\UserProfile\Integrated,March7thAssistant\logs\
|
||||
C:\Programs\MiFlash
|
||||
C:\Programs\MiFlash_Unlock
|
||||
C:\Programs\QuarkCloudDrive
|
||||
C:\Programs\ScoopApps\apps\translucenttb\current\settings.json
|
||||
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
|
||||
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
|
||||
|
||||
# ---- 其它盘 ----
|
||||
D:\UserData\Documents\Aria
|
||||
D:\UserData\Documents\CodeSpace
|
||||
|
||||
E:\CodeSpace
|
||||
Aria
|
||||
Reference in new issue
Block a user