← 中文资源

简体中文版本

恢复前校验备份清单

把备份产物与清单比对,报告校验和、体积与最小对象数的任何不一致,避免在不完整的数据上尝试恢复。

阅读英文原文

任务

依次核对校验和、字节数与对象数量,一次性列出全部不一致项,让恢复流程在开始之前就停下。

契约

  • 输入:JSON 对象:{ backup: { checksum, sizeBytes, objectCount }, manifest: { checksum, sizeBytes, minimumObjects } }
  • 输出:JSON 对象:{ verified: boolean, mismatches: string[] }

样例

  1. 输入 {"backup":{"checksum":"sha256:abc","sizeBytes":1024,"objectCount":40},"manifest":{"checksum":"sha256:abc","sizeBytes":1024,"minimumObjects":10}} -> 期望 {"verified":true,"mismatches":[]}。校验和、体积与对象数都满足清单要求。
  2. 输入 {"backup":{"checksum":"sha256:def","sizeBytes":900,"objectCount":4},"manifest":{"checksum":"sha256:abc","sizeBytes":1024,"minimumObjects":10}} -> 期望 {"verified":false,"mismatches":["checksum","object-count","size"]}。三项检查全部失败,并被一起按序报告。

参考实现

function solve({ backup, manifest }) {
      const mismatches = [];
      if (backup.checksum !== manifest.checksum) mismatches.push('checksum');
      if (backup.sizeBytes !== manifest.sizeBytes) mismatches.push('size');
      if (backup.objectCount < manifest.minimumObjects) mismatches.push('object-count');
      return { verified: mismatches.length === 0, mismatches: mismatches.sort() };
    }

为什么有效

恢复演练失败的根源,往往是没人验证过的产物。先校验清单,能把“赌一把能恢复”变成明确的前置条件。

要一次性报告所有失败项,而不是遇到第一个就停下;恢复团队需要完整的信息。