Ho bisogno di trasferire file di grandi dimensioni attraverso la rete e ho bisogno di creare il checksum per loro su base oraria. quindi la velocità per generare il checksum è fondamentale per me.il modo più veloce per creare checksum per file di grandi dimensioni in python
in qualche modo non riesco a far funzionare zlib.crc32 e zlib.adler32 con file più grandi di 4 GB su Windows XP Pro a 64 bit. sospetto di aver raggiunto il limite di 32 bit qui? usando hashlib.md5 potrei ottenere un risultato ma il problema è la velocità. ci vogliono circa 5 minuti per generare un file md5 per 4,8 GB. il task manager mostra che il processo utilizza solo un core.
le mie domande sono:
- c'è un modo per fare opere CRC file di grandi dimensioni? preferisco usare crc rispetto a md5
- se non c'è un modo per velocizzare md5.hexdigest()/md5.digest? o in questo caso un hashlib hexdigest/digest? magari dividerlo in un processo multi-thread? Come lo faccio?
PS: sto lavorando a qualcosa di simile a un sistema di "Gestione risorse", un po 'come svn ma la risorsa è costituita da file di immagine compressi di grandi dimensioni. i file hanno piccole modifiche incrementali. l'hashing/checksum è necessario per rilevare le modifiche e il rilevamento degli errori.
C'è un motivo per cui non è possibile utilizzare rsync? –
È necessario verificare la loro integrità (con l'algoritmo appropriato che è la domanda effettiva) solo perché si trasferiscono i file sulla rete? Se è così, questo è già verificato a livello hardware per i frame e nel layer Tcp per ogni parte mancante (sto assumendo una connessione Tcp qui). Scusa se sembra ovvio, ma preferirei chiedere. – RedGlyph
ciao ragazzi, grazie per la risposta.perché non posso usare rsync perché è quasi come un sistema di gestione delle risorse che trasferisce file di immagine compressi di grandi dimensioni. diverse persone che lavorano su alcuni file. questi file hanno piccole modifiche incrementali che dovevano essere rilevate. quindi sto cercando di usare il checksum/hash. – pixelblender