La risposta di Nerdwaller sull'utilizzo tee
per trasferire e calcolare contemporaneamente un checksum è un buon approccio se sei principalmente preoccupato per la corruzione in rete. Tuttavia, non ti proteggerà dalla corruzione sulla strada del disco, ecc., Poiché prende il checksum prima che colpisca il disco.
Ma vorrei aggiungere qualcosa:
1 TiB / 40 minuti ≈ 437 MiB / sec 1 .
È piuttosto veloce, in realtà. Ricorda che a meno che tu non abbia molta RAM, deve tornare dalla memoria. Quindi la prima cosa da controllare è guardare iostat -kx 10
mentre esegui i tuoi checksum; in particolare si desidera prestare attenzione alla %util
colonna. Se stai agganciando i dischi (vicino al 100%), la risposta è acquistare spazio di archiviazione più veloce.
Altrimenti, come menzionato da altri poster, puoi provare diversi algoritmi di checksum. MD4, MD5 e SHA-1 sono tutti progettati per essere hash crittografici (anche se nessuno di questi dovrebbe essere più utilizzato a tale scopo; tutti sono considerati troppo deboli). Per quanto riguarda la velocità, puoi confrontarli con openssl speed md4 md5 sha1 sha256
. Ho lanciato SHA256 per avere almeno un hash abbastanza forte.
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
Di quanto sopra, puoi vedere che MD4 è il più veloce e SHA256 il più lento. Questo risultato è tipico dell'hardware simile al PC, almeno.
Se vuoi prestazioni ancora maggiori (a costo di essere banale da manomettere e anche meno probabilità di rilevare la corruzione), vuoi guardare un CRC o un hash Adler. Dei due, Adler è in genere più veloce, ma più debole. Sfortunatamente, non sono a conoscenza di implementazioni a riga di comando molto veloci; i programmi sul mio sistema sono tutti più lenti di md4 di OpenSSL.
Quindi, la tua migliore scommessa in termini di velocità è openssl md4 -r
(la -r
fa sembrare un output md5sum).
Se sei disposto a fare un po 'di compilazione e / o programmazione minima, vedi il codice di Mark Adler sopra Stack Overflow e anche xxhash . Se hai SSE 4.2, non sarai in grado di battere la velocità dell'istruzione CRC hardware.
1 1 TiB = 1024⁴ byte; 1 MiB = 1024² byte. Viene a ≈417 MB / sec con potenze di 1000 unità.