pm 1.1.2
pm 1.1.2 —— 备份盘瞬断保护内建(2026-09-02 用户裁定「防瞬断功能加入正式功能,防止备份/检查时硬盘断连;升到 1.1.2 发布」)。
1.1.1 → 1.1.2
- 瞬断保护内建(
Pm.Removable):外置 USB 备份盘在持续 I/O 下会掉线又自己回来(真实盘 2026-09-02 一天 11 次,最短 2 s 内重挂)。1.1.1 时pm backup/pm apply遇到它整批崩掉(hPutBuf: invalid argument逃顶),pm doctor --deep吐一片假「读取失败」,只能靠仓内 python 脚本在外面分块续跑。现在同一套判据进了 pm:盘在 =.pm/root-id.json读得出;一个 I/O 异常三分——确定性错误(用户错误、权限、已存在…)原样抛出,行为与 1.1.1 逐字相同;盘不在 → 等它回来(最多[backup] drive-wait秒,缺省 1800)再冷却 30 s 重试;盘在而 EINVAL 一类 → 短停重试,同一步骤最多 5 次。 - 续跑不重做:
pm backup的扫描按 pass 续(拿这一遍的索引当旧快照重扫,只补漏);pm apply逐项记进度,异常后等盘、先doctor --repair把「rename 已落位、Done 未写」的洞补上,再按「组内每项都成功 / 组内每项 journal 末事件都是 Done」结算,只把没跑完的组交给下一场——已落好的文件不重拷、不重 hash;pm doctor --backup [--deep]整场幂等可重跑,--deep逐条先等盘,场末盘不在则整场作废重跑,不交假结论。 - 配置项
[backup] drive-wait(pm config set --drive-wait <秒>/--no-drive-wait;GUI 设置页备份卡;POST /api/config键driveWait);0 = 关闭 = 1.1.1 行为。 - 内核改动只有一行:
ExecEnv多一个只读进度钩子eeProgress。Pm.Derived从Pm.Convert字节级拆出(解 Doctor→Convert→Cli 的依赖环)。scripts/backup_watchdog.py退役;两支核验脚本(verify_backup_dst.py/verify_backup_entries.py)保留。 - 照片与索引之外的文件一字节不动;关闭保护时行为与 1.1.1 逐字相同(对偶用例钉住)。
安装
pm-ui_1.1.2_x64-setup.exe:安装包(装到当前用户,不要管理员权限)。pm-1.1.2-windows-x64.zip:免安装,含pm.exe(CLI)与pm-ui.exe(GUI)。- 两个资产都没有代码签名,首次运行 SmartScreen 会提示「未知发布者」。
门禁
第一方自审 + 判别突变判红 + 436 测试全绿(新增 RemovableTests 8 例:盘的替身 = 挪走 root-id.json、插回由打印口触发;每个「开」用例配一个「关」对偶)、GHC 警告 0;细节见 docs/REVIEW-LOG.md「1.1.2 瞬断保护内建」节。
SHA-256
17e9922a218ce2765d0ced591ddea0f654a9eb7e83a7598e1c0c0c840987388d *pm-1.1.2-windows-x64.zip
5e2eb3aeaa15ff9833b74aea9133745c2cbbbb32047996e604a7205231372fad *pm-ui_1.1.2_x64-setup.exe