Obteniendo md5 durante wget

10

Estoy wgetcreando archivos enormes (más de 100 GB) y luego comparo mi md5sum con la suma publicada en el repositorio. Lo creas o no, md5sumlleva una cantidad de tiempo no trivial para ejecutarse en un archivo de este tamaño, por lo que me gustaría obtener la suma en paralelo con la descarga.

¿Cuál es la mejor manera de hacer esto? No veo una wgetopción para calcular MD5 durante la descarga (sorprendentemente), ¿así que supongo que usar teesería el camino a seguir?

Fixee
fuente
es posible? Estoy bastante seguro de que necesita todo el binario para verificar el hash. Dudo que incluso dividirlo en pasos (es decir, hash a medida que se descarga) sea posible, ya que es posible que no reciba el archivo en orden secuencial. De cualquier manera, me gustaría ver si alguien tiene una solución.
n0pe
@MaxMackie: Definitivamente es posible: dado que estoy descargando todo el archivo, wget teóricamente podría ejecutarlo a través de MD5. Unf, no lo hace.
Fixee

Respuestas:

11

En realidad, esto podría ser posible:

wget -O - http://example.com/file | tee file | md5sum > file.md5

Sin embargo, esto supone que tiene el hash en un archivo de antemano.

n0pe
fuente
1
Esto se ve bien, y no veo cómo supone nada sobre tener el "has en un archivo de antemano". Simplemente genera la suma a medida que avanza y la escribe en un archivo que puede usar para comparar más adelante. El único inconveniente podría ser la sobrecarga de memoria.
Caleb
2
@Caleb ¿Qué memoria de sobrecarga? md5sum(y cualquier otro algoritmo hash común, como la familia SHA) opera en memoria constante. Están diseñados para trabajar en transmisiones.
Gilles 'SO- deja de ser malvado'
con un adicional awkal final puede eliminar el `-` al final automáticamente. wget -O - "https://example.org/myFile.jpg" | tee file | md5sum | awk '{print $1}' > md5.txt
Max