necesito transferir archivos de gran tamaño a través de la red y necesito crear una suma de comprobación para cada hora. entonces la velocidad para generar checksum es crítica para mí.la forma más rápida de crear una suma de comprobación para archivos de gran tamaño en python
de alguna manera no puedo hacer que zlib.crc32 y zlib.adler32 trabajen con archivos de más de 4 GB en la máquina con Windows XP Pro 64bit. ¿Sospecho que he llegado a la limitación de 32 bits aquí? usando hashlib.md5 podría obtener un resultado, pero el problema es la velocidad. toma aproximadamente 5 minutos generar un md5 para un archivo de 4.8 GB. el administrador de tareas muestra que el proceso está usando solo un núcleo.
mis preguntas son:
- hay una manera de hacer las obras de CRC en el archivo de gran tamaño? Prefiero usar crc que md5
- si no, ¿hay alguna manera de acelerar el md5.hexdigest()/md5.digest? o en este caso, cualquier hashlib hexdigest/digest? ¿Tal vez dividiéndolo en un proceso de múltiples hilos? ¿Cómo puedo hacer eso?
PD: Estoy trabajando en algo similar a un sistema de "Gestión de activos", algo así como svn pero el activo consiste en grandes archivos de imagen comprimida. los archivos tienen pequeños cambios incrementales. el hash/checksum es necesario para detectar cambios y detectar errores.
¿Hay alguna razón por la que no pueda usar rsync? –
¿Necesita verificar su integridad (con el algoritmo apropiado que es la pregunta real) solo porque transfiere los archivos a través de la red? Si es así, esto ya está verificado en el nivel de hardware para los marcos y en la capa Tcp para cualquier parte faltante (supongo que aquí hay una conexión Tcp). Lo siento si eso suena obvio, pero prefiero preguntar. – RedGlyph
hola chicos, gracias por la respuesta.Por qué no puedo usar rsync porque es casi como un sistema de administración de activos que transfiere grandes archivos de imágenes comprimidas. varias personas trabajando en algunos archivos. esos archivos tienen pequeños cambios incrementales que deben ser detectados. por lo tanto, estoy tratando de usar checksum/hash. – pixelblender