如何验证还原?

Nic*_*Nic 7 windows-server-2008 backup-restoration verification

您将使用什么工具来验证恢复的文件结构是否完整?我的环境是 Windows Server 2008 文件服务器。(我们使用磁带进行备份,但这无关紧要。)

我特别在寻找一种工具,它可以:

  • 记录指定目录下所有文件和文件夹的名称
  • (可选)计算遇到的每个文件的校验和
  • 以人类可读的格式保存此索引
  • 将索引与恢复的数据进行比较并显示差异

一些背景:我最近不得不更换文件服务器中的磁盘。升级计划在最近一次完整备份后 36 小时开始,因此我创建了一个差异备份。但是,事实证明,我们的一个应用程序正在清除保存到服务器的文件的存档位,因此这些未包含在差异备份中。直到我的用户报告某些文件丢失时,我才意识到这一点。

除此之外,是否还有其他常用方法来验证还原的完整性完整性?我经常被告知,通过恢复备份来测试备份是知道备份是否正常工作的唯一方法,但是您如何处理它 99% 正确工作而其他 1% 静默失败的情况?


更新:显然我需要澄清一些事情。

  • 我已经在可能的情况下使用完整备份,但有时情况需要差异备份。发生这种情况时,我需要验证原始数据中的每个文件是否也在恢复数据中。
  • 我已经在使用 Backup Exec 中的“验证”功能,但这只能确保写入磁带的所有内容都可以再次读回。
  • 我偶尔会进行抽查恢复,以确保备份媒体完好无损。

我已经熟悉“测试备份的最佳方法是恢复它”的常识。这是必要的步骤,但还不够。能够恢复您备份的文件并不能保证首先备份您需要的所有文件。这就是我需要解决的问题。

Nic*_*Nic 4

Linux 上有多种非常适合此任务的工具。您可以使用mount.cifs在 Linux 主机上挂载 Windows 共享文件夹,或者您可以直接在文件服务器上运行Cygwin 。

在开始备份之前,使用find命令从指定目录递归迭代并将结果写入文件。该列表可以与备份一起保存以供将来使用。

find /path/to/dir > list_before.txt
Run Code Online (Sandbox Code Playgroud)

如果您想计算每个文件的校验和,只需将输出传递给md5. 此命令仅显示文件名,因为文件夹不需要哈希值。

find /path/to/dir -type f -print0 | xargs -0 md5 > md5_before.txt
Run Code Online (Sandbox Code Playgroud)

恢复备份后,使用相同的命令构建另一个文件列表,然后使用diff来查找它们之间的差异。理想情况下,该命令不应给出任何输出。

diff list_before.txt list_after.txt
Run Code Online (Sandbox Code Playgroud)