Este es mi problema: necesito archivar en archivos tar muchos (hasta 60 TB) de archivos grandes (generalmente de 30 a 40 GB cada uno). Me gustaría hacer sumas de verificación (md5, sha1, lo que sea) de estos archivos antes de archivarlos; sin embargo, no leer cada archivo dos veces (una para suma de verificación, dos para tar'ing) es más o menos una necesidad para lograr un rendimiento de archivo muy alto (LTO-4 quiere 120 MB / s sostenidos, y la ventana de copia de seguridad es limitada).
Entonces, necesitaría alguna forma de leer un archivo, alimentando una herramienta de suma de verificación en un lado y construyendo un alquitrán para grabar en el otro lado, algo así:
tar cf - files | tee tarfile.tar | md5sum -
Excepto que no quiero la suma de verificación de todo el archivo (este código de shell de muestra hace exactamente esto) sino una suma de verificación para cada archivo individual en el archivo.
He estudiado las opciones de GNU tar, Pax, Star. He mirado la fuente de Archive :: Tar . No veo una manera obvia de lograr esto. Parece que tendré que construir a mano algo en C o similar para lograr lo que necesito. Perl / Python / etc simplemente no lo reducirá en términos de rendimiento, y los diversos programas tar pierden la "arquitectura de complementos" necesaria. ¿Alguien sabe de alguna solución existente para esto antes de comenzar el cambio de código?
7z
que puede elegir el hash e imprimirlo en una forma que sha1sum
y sha256sum
puede comprender: 7zip.bugaco.com/7zip/7zip_15_09/MANUAL/cmdline/commands/... (y sami-lehtinen.net/blog/... ) Pruébelo: 7z h -scrcsha256 mydir/* | sed --regexp-extended 's, +[0-9]+ +, ,g' > mydir.sha256sum ; sha256sum -c mydir.sha256sum
(probado con p7zip versión 15.09 beta)
tar
si decides escribirlo;)