Backup SFV/CRC32校验和是否足够快,可以检查常见的备份文件?

Backup SFV/CRC32校验和是否足够快,可以检查常见的备份文件?,backup,checksum,crc32,integrity,Backup,Checksum,Crc32,Integrity,我有3 TB,超过300000个各种大小的参考文件(每个20、30、40、200兆),我通常会定期备份(不压缩)。几个月前,我丢失了一些文件,可能是因为数据退化(就像我在没有通知的情况下“备份”损坏的文件一样) 我不关心安全性,因此不需要MD5、SHA等。我只想确保我复制的文件是好的(相同的位和字节),并在几个月后验证备份是否完整,然后再进行备份 因此,我的需求是基本的,因为文件不是很重要,也不需要安全性(没有敏感信息)。 我的疑问:“SFV CRC/32”格式/方法是否适合我的需要?还有比这更

我有3 TB,超过300000个各种大小的参考文件(每个20、30、40、200兆),我通常会定期备份(不压缩)。几个月前,我丢失了一些文件,可能是因为数据退化(就像我在没有通知的情况下“备份”损坏的文件一样)

我不关心安全性,因此不需要MD5、SHA等。我只想确保我复制的文件是好的(相同的位和字节),并在几个月后验证备份是否完整,然后再进行备份

因此,我的需求是基本的,因为文件不是很重要,也不需要安全性(没有敏感信息)。 我的疑问:“SFV CRC/32”格式/方法是否适合我的需要?还有比这更好更快的吗?我用的是ExactFile程序

是否有比SFV/CRC32更快的校验和,但没有缺陷?我尝试使用MD5,但速度很慢,因为我不需要数据安全性,所以我更喜欢SFV/CRC32。尽管如此,这还是令人痛苦的,因为有超过300000个文件,并且需要数小时才能对所有文件进行校验和,即使使用CPU xeon 8核HT和快速HDD

从数据完整性的角度来看,将所有文件合并到一个.ZIP或.RAR中,而不是让它们“松散”在文件夹和文件中,有一些优势吗

一些提示

谢谢

如果您可以量化“几个月前,我丢失了一些文件”中的“少数”和“一些”(其中“少数”将被视为替换为“每少数”以获得一个比率),那么您可以计算假阳性的概率。然而,从这些话,我会说,是的,32位CRC应该适合您的应用

至于速度,如果你有一个最新的英特尔处理器,你可能有一个CRC-32C指令,这可以使计算速度快得多,大约15倍。(有关一些代码,请参阅。)通过在多个内核上运行它,可以使速度更快。如果操作正确,您应该受到I/O的限制,而不是计算的限制


在这种情况下,将它们捆绑在zip或rar中没有任何优势。事实上,如果一个文件的损坏导致您丢失所有内容,情况可能会更糟。

如果每个核心的吞吐量不超过每秒250 MB,则可能是I/O或内存速度受限。CRC32和MD5的原始散列速度高于此速度,即使在已有数十年历史的硬件上,也要假设一个非差劲的合理优化实现

请看一下,其中还包括大量其他哈希算法

Castagnoli CRC32可以比标准CRC32或MD5快,因为较新的CPU有专门的指令;使用该指令和大量支持代码(用于并行散列三个流,用一点线性代数将部分结果拼接在一起,等等,pp),您可以将散列速度提高到大约1个循环/dword。由于特殊的AES指令,基于AES的哈希在最近的CPU上也非常快

然而,最终无论哈希函数等待数据读取的速度有多快,;特别是在多核机器上,在这样的应用程序中,几乎总是I/O绑定,除非受到小型缓存和深内存缓存层次结构延迟的破坏

我会坚持使用MD5,它不比CRC32慢,而且是普遍可用的,即使在最古老的机器上,在几乎所有发明的编程系统/语言中也是如此。不要认为它是一种“加密安全散列”(现在不是了),而是一种CRC128,它的速度与CRC32一样快,但需要一些2^64散列才能发生冲突,而不是像CRC32那样只有一万个

如果您想滚动一些自定义代码,那么CRC确实有一些优点:文件的CRC可以通过将子块的CRC与一点线性代数相结合来计算。对于像MD5这样的常规散列,这是不可能的(但您总是可以并行处理多个文件)


有很多现成的程序可以计算文件和目录的MD5哈希值fast。我推荐md5sum+cousins的“deep”版本:您可以找到并下载。

达斯Gizka,谢谢您的提示。现在我使用的是您指出的md5deep 64。非常好。我曾经使用ExactFile,它在2010年停止更新,现在仍然是32位(没有64位版本)。我对两者做了一个快速的比较。ExactFile创建MD5摘要的速度更快。但与《文摘》相比,md5deep64要快得多

正如你所说,我的问题是硬盘。对于备份和存储,我使用了三台Seagate,每台容量为2 TB(7200rpm 64兆缓存)。使用SSD的过程会快得多,但使用TB的文件很难使用SSD

几天前,我在部分档案中做了这个过程:1Tera(约170000个档案)。ExactFile花了大约六个小时来创建摘要SFV/CRC32。我使用了一台较新的机器,配备了i7 4770k(嵌入CRC32指令,8核-四个实核和四个虚核,MB Gygabyte Z87X-UD4H,16 RAM)

在整个文件计算过程中,CPU核心几乎无法使用(3%到4%,最大20%)。硬盘的使用率为100%,但是,只有一小部分速度(sata 3),大部分时间为70 MB/s,有时会下降到30 MB/s,具体取决于正在计算的文件数和后台的防病毒功能(后来我禁用了该功能,因为复制大量文件时经常会禁用)


现在我正在测试一个使用二进制文件比较的复制程序。无论如何,我将继续使用md5摘要。感谢您提供的信息,欢迎提供任何提示。

马克·阿德勒,感谢您的澄清。我从1997年开始在这里保存文件,我一直在从硬盘复制到硬盘。所以总是想用校验和来验证一切正常。到