tee
如果您主要担心网络损坏,那么Nerdwaller的有关同时传输和计算校验和的答案是一个好方法。但是,它无法保护您免遭磁盘损坏等问题,因为它在到达磁盘之前先接受校验和。
但我想补充一点:
1 TiB / 40分钟≈437 MiB /秒1。
实际上,那非常快。请记住,除非您有大量 RAM,否则必须从存储中恢复。因此,要检查的第一件事是在iostat -kx 10
运行校验和时进行监视。特别是您要注意该%util
列。如果您要固定磁盘(接近100%),那么答案就是购买更快的存储。
否则,如其他海报所述,您可以尝试不同的校验和算法。MD4,MD5和SHA-1都被设计为加密散列(尽管这些散列都不再用于该目的;都被认为太弱了)。速度明智,您可以将它们与进行比较openssl speed md4 md5 sha1 sha256
。我投入了SHA256,以至少拥有一个仍然足够强大的哈希值。
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md4 61716.74k 195224.79k 455472.73k 695089.49k 820035.58k
md5 46317.99k 140508.39k 320853.42k 473215.66k 539563.35k
sha1 43397.21k 126598.91k 283775.15k 392279.04k 473153.54k
sha256 33677.99k 75638.81k 128904.87k 155874.91k 167774.89k
在以上之中,您可以看到MD4最快,而SHA256最低。至少在类似PC的硬件上,这种结果是典型的。
如果您希望获得更高的性能(以琐碎的代价来进行篡改,并且也不太可能检测到损坏),则需要查看CRC或Adler哈希。在这两者中,阿德勒通常更快,但更弱。不幸的是,我不知道任何真正快速的命令行实现。我系统上的程序都比OpenSSL的md4慢。
因此,最好的选择是速度openssl md4 -r
(-r
使其看起来像md5sum输出)。
如果您愿意进行一些编译和/或最少的编程,请在Stack Overflow和xxhash 上查看Mark Adler的代码。如果您具有SSE 4.2,将无法超越硬件CRC指令的速度。
1 1 TiB =1024⁴字节; 1 MiB =1024²字节。功率为1000时约为417MB /秒。