3

我的 linux 服务器上有几个稀疏图像(总大小 320G;已用大小 111G),并且希望每晚获得这些图像的校验和。我想知道是否有一种有效的方法来创建校验和。如果我执行以下操作,校验和创建会花费大量时间:

~ # dd bs=1 count=0 seek=5G if=/dev/zero of=sparse.img
0+0 Datensätze ein
0+0 Datensätze aus
0 Bytes (0 B) kopiert, 0,00036461 s, 0,0 kB/s
~ # du -hs sparse.img
0   sparse.img
~ # time sha512sum sparse.img
e4f21997407b9cb0df347f6eba2...  sparse.img
real    0m55.339s
user    0m52.010s
sys     0m2.790s
4

2 回答 2

1

对此没有真正好的解决方案,因为(a)所有这些零仍然是文件内容的一部分,即使没有为它们分配存储空间,并且(b)似乎没有任何工具旨在操作稀疏文件。诚然,可以告诉 GNU tar(以及各种其他备份/归档产品)处理稀疏文件,但我从未见过真正查询文件系统以获取分配映射的工具。例如,GNU tar 的文档清楚地表明它通过显式搜索文件内容以查找零运行来处理稀疏文件(并且它作为预处理步骤而不是内联执行此操作,其效果是被归档的文件被读取两次.)

理想情况下,有一种方法可以直接访问文件的分配块。我可以想出几种方法来实现这样的事情,但它必须至少在十年前被提出和指定,才能在这一点上发挥作用。

不幸的是,您的问题似乎没有一个好的答案。我只能建议您记录备份系统为您提供的任何校验和,并在还原之前使用它来验证备份媒体,但您可能已经这样做了。

于 2013-07-25T02:43:41.353 回答
1

自 2016 年以来一直有一个很好的解决方案:从 1.29 版开始,GNU tar 具有: If possible, use SEEK_DATA/SEEK_HOLE to detect sparse files. 通过传递来启用检测稀疏文件,--sparse例如:tar -c --sparse <file name> | md5sum为您提供一种可重复的方式来 md5sum 文件,并且只读取文件一次。

于 2021-01-05T04:23:17.923 回答