SHA256 比对备份清单查漏备改过,抽样读回验证真的能恢复,全程只读不还原
book-backup-verifySKILL.md 为准。> **本地运行,零网络、免 API Key、数据不出电脑。** > 四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。 # 账套备份与可恢复校验 备份的真相只有一句话:**没验证过的备份,不算备份**。 本包做两件事: 1. **清单比对**——对备份目录内每个文件算 SHA256,与基线清单比对,揪出三类问题:`缺失`(清单里有、备份里没有)、`内容不一致`(SHA256 不符,可能被改过)、`清单未登记`(备份里有、清单里没登记) 2. **抽样恢复验证**——随机抽若干文件把内容读回,确认真的能读出来。注意:是**读回校验,不是还原**,不覆盖原文件 ## 典型流程:先生成基线,再比对 ```bash # 第一步:第一次备份后,生成基线清单 "$PY" scripts/backup_verify.py /path/to/backup --emit-manifest 基线清单.txt # 把清单归档到另一处(另一台机器 / 对象存储) # 第二步:日常校验 "$PY" scripts/backup_verify.py /path/to/backup --manifest 基线清单.txt --execute ``` 没有清单就没法比对,本包会**直接拒算**,不给一个"看起来没问题"的替代结论。 ## 输出四件套 | 文件 | 内容 | |---|---| | `bv_主表.csv` | 逐文件:路径 / SHA256 / 比对结果 | | `bv_异常表.csv` | 问题明细:缺失 / 内容不一致 / 未登记 / 不可读 | | `bv_校验表.csv` | 备份目录、清单条目、四类统计、只读声明 | | `bv_抽样恢复.csv` | 抽样文件:路径 / 字节数 / SHA256 前 16 位 / 结果 | | `fin-log.jsonl` | 处理日志(追加) | ## 环境准备 ```bash PY="<python 3.8+ 路径>" # 纯标准库(hashlib / os / random) "$PY" <skill目录>/scripts/backup_verify.py <备份目录> [参数] ``` ## 用法 ```bash # 生成基线清单 backup_verify.py /path/to/backup --emit-manifest 基线清单.txt # 比对 + 抽样 backup_verify.py /path/to/backup --manifest 基线清单.txt --sample 3 --execute ``` 真实输出(第一次全对): ``` 方案:备份目录 _bk | 清单 4 条 | 抽样 2 个 --- 校验结果 --- 清单命中 4 个 | 缺失 0 | 内容不一致 0 | 清单未登记 0 抽样可读回 2 个 ``` 真实输出(改了一个、删了一个、多了一个): ``` --- 校验结果 --- 清单命中 2 个 | 缺失 1 | 内容不一致 1 | 清单未登记 1 [缺失] 2026-08/发票明细.xlsx [改动] 2026-09/README.txt [未登记] 2026-09/月结清单.xlsx ``` 常用参数: | 参数 | 默认 | 说明 | |---|---|---| | `--emit-manifest PATH` | 无 | 扫描目录生成基线清单,写盘后退出 | | `--manifest PATH` | 空 | 备份清单文件(相对路径 + Tab + SHA256) | | `--sample N` | 5 | 抽样恢复验证的文件数,`0` 表示跳过 | | `--seed N` | 0 | 抽样随机种子,固定后可复现 | ## 清单格式 ``` # 注释行以 # 开头 2026-09/凭证明细.xlsx a3f1c9e8b2d4506f... 2026-09/README.txt 0b4e2a91c7d83f5e... ``` 制表符分隔;若整行只有空白分隔也能读(自动回退)。路径用 `/` 分隔,与平台无关。 ## 安全与边界(拒绝权) - **全程只读**:只读取备份内容,不做任何还原或覆盖 - **不做真正的恢复演练**:抽样是"读回校验",恢复演练请在隔离环境手动做 - **没清单就拒算**:不生成替代性结论 - **空目录拒给通过**:目录里没文件时报"目录为空,拒绝给出通过结论" - **不校验备份策略**:备份频率、保留期、异地容灾不在本包范围 ## 人工复核(必读) - 「内容不一致」可能是备份过程中断导致,也可能是真被改过,**先查再信** - 抽样只覆盖少量文件,未抽到的不等于没问题 - 基线清单本身要异地归档,和备份放一起等于没归档 - 恢复演练建议每季度做一次,本包不做 ## 相邻路线转交 | 用户要做的事 | 转交给 | |---|---| | 备份策略与保留期制定 | 未包含,需人工制度 | | 真机恢复演练 | 未包含,需人工执行 | | 月结完成度检查 | `month-end-close-check` | ## 可直接复制的说法 ```text 先给这个备份目录生成一份基线清单(--emit-manifest), 把清单归档到别处。 之后每次校验跑:--manifest 基线清单.txt,抽样 3 个文件读回验证。 比对要区分四种结果:一致、缺失、内容不一致、清单未登记。 只做只读校验,不要还原任何文件,也不要给我一个"看起来没问题"的替代结论。 ``` ## 做完怎么算完成 - [ ] 缺失 / 内容不一致 项已查明并处理 - [ ] 清单未登记项已补进清单或确认可忽略 - [ ] 抽样读回成功,基线清单已异地归档 --- 本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。 版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。 本技能由律令科技(深圳)有限公司开发,**财友云(caiyouyun.cn)**发布与展示。 允许个人及企业内部免费使用、复制、修改,包括内部生产环境。 未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。 各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 `LICENSE.md`。
从业务单据表按科目映射批量生成凭证草稿,借贷平衡预检
借贷平衡、科目级次、辅助核算必填、红字方向、异常金额预警
多系统科目对照,模糊匹配 + 人工确认清单,输出映射表
两方明细按金额/日期/摘要模糊匹配,输出已勾对与单边差异
损益结转、折旧摊销计提、税金计提,输出凭证草稿
订单/回款/发票按主键优先、名称金额日期辅助,支持一对多与多对一,差异拆成未回款/少回款/未开票/超开票
对照月结清单检查完成证据、差异状态、责任人与风险等级,未对账/未计提/未摊销/凭证未审核直接标高风险
按发票号码+代码+金额+日期组合查重,拦住重复报销与重复入账
进销项发票台账,按月/客户/税率汇总,导出 CSV
多银行 CSV/Excel 流水归一化成统一字段与方向标记
流水与账面按金额+日期窗口匹配,输出已勾对/单边与余额调节表
40+ 指标(偿债/营运/盈利/成长)+ 多期趋势与同业占位
SKILL.md 为准。