使用哈希检查数据完整性对我的场景有用吗?

使用哈希检查数据完整性对我的场景有用吗?

我有一台 NAS 作为制作系统(主要是视频片段和项目文件)和 1:1 备份。我只需要在紧急情况下检索备份数据。这种情况还没有发生过。

最近我担心备份中的数据可能会在不被察觉的情况下被损坏。所以我考虑对两个系统上的所有文件进行哈希处理,以检查是否存在任何意外差异。

我没有找到适合我整个流程的合适工具,但我可以为此编写自己的 Python 脚本。不过这会花我几周的时间,所以我想问一下这是否有意义。

我之所以问这个问题,是因为备份每天都在运行(驱动器处于活动状态并且内部错误更正可以生效,但是备份软件不会散列)并且网络传输中已经有一层错误更正(也许是 Windows 操作系统和 NTFS 文件系统)。

是否建议能够在所有文件上应用额外的安全层进行 SHA512 哈希处理,或者是否可以依赖现有的错误更正?

谢谢!

答案1

您需要非常小心地进行用户数据校验!例如,启用 ReFS 的校验会将其变成完全日志结构的文件系统,并且所有 I/O 模式都会发生变化。

https://www.starwindsoftware.com/blog/log-structured-file-systems-microsoft-refs-v2-investigation-part-1

您的数据库应用程序肯定不会喜欢它,因为数据库在“平面”存储前面使用日志来加速写入,而使用 ReFS 您最终会得到对日志的概念,从性能角度来看这是一个糟糕的想法。

https://www.usenix.org/system/files/conference/inflow14/inflow14-yang.pdf

我认为您可以放心地依靠您选择的备份来处理数据完整性检查。您可以承受多少停机时间?

答案2

取决于数据...对于我们的数据库备份,我们会在传输之前对其进行哈希处理,并在其到达的第一个位置进行测试。然后,我们将新哈希推送到文件顶部,以供其他系统读取,以将其哈希与经过验证的哈希进行比较,并确保他们获得了该文件的副本。

如果您的项目文件很重要,那就这么做吧。如果不重要,可能不值得您花时间......

bash 可能更快...您可以只对执行 openssl 的文件进行 for 循环,或者如果您不太关心完美性和更快的速度,请使用 md5sum。

因此,要么是 md5sum $file >> log.out,要么是 sha11sum >> log.out。您可以向其中添加日期和内容等...然后,您可以 wc -l 文件行并使用 diff 进行比较,确保它们相同,然后在第二个副本上运行哈希值,看看它们是否相同。

希望这能有所帮助...抱歉我几个小时前就应该睡觉了。

答案3

决定是否要在卷级别、文件级别或两者上实施保护。我所说的卷是指可以进行数据校验和和修复的文件系统,例如重新文件系统或 ZFS。文件级别,我的意思是使用备份软件检查文件,或者您正在考虑的这种临时校验和。

总的来说,请确保你的备份是冷备份,也就是离线备份,保存在不同介质上,最重要的是已测试。 这是一个恢复系统,而不是备份系统。如果某些恶意软件控制了您的存储并加密一个 NAS 上的主存储和备份,那就非常糟糕了。即使在这种情况下,您仍未插上电源但已通过复制有用文件进行测试的外部存储介质也会拯救您。

相关内容