Estoy construyendo una pequeña herramienta que descargará archivos usando wget, leyendo las URL de diferentes archivos. La misma URL puede estar presente en diferentes archivos; la URL puede estar presente en un archivo varias veces. Sería ineficiente descargar una página varias veces (cada vez que su URL se encuentre en la lista).Cómo calcular un hash para una cadena (url) en bash para wget caching
Por lo tanto, el enfoque simple es guardar el archivo descargado y ordenar a wget que no lo descargue nuevamente si ya está allí.
Eso sería muy sencillo; sin embargo, las URL son muy largas (muchos parámetros GET) y, por lo tanto, no se pueden utilizar como tales para los nombres de archivo (wget da el error "No se puede escribir en ... [] nombre de archivo demasiado tiempo").
Por lo tanto, necesito cambiar el nombre de los archivos descargados. Pero para que el mecanismo de almacenamiento en caché funcione, el esquema de cambio de nombre debe implementar "one url < => one name": si una url determinada puede tener varios nombres, el almacenamiento en caché no funciona (es decir, si simplemente numere los archivos en el orden se encuentran, no dejaré que wget identifique qué URL ya se han descargado).
El esquema más simple cambio de nombre sería calcular un hash MD5 del nombre de archivo (y no del propio archivo, que es lo que hace md5sum); eso aseguraría que el nombre del archivo sea único y que una url dada tenga siempre el mismo nombre.
Es posible hacer esto en Perl, etc., pero ¿se puede hacer directamente en bash o utilizando una utilidad del sistema (RedHat)?
Bueno muchas gracias por la respuesta rápida; ¡No me había dado cuenta de que simplemente podía usar md5sum de esta manera! Sin embargo, no entiendo lo que dice sobre el 'nombre de archivo': cuando se calcula la clave md5, ¿todavía no hay nombres de archivo ...? – Bambax
@bambax: Epsilon Prime se refiere a la parte de nombre de archivo de la URL, por ejemplo: "index.html". El comando 'sed' elimina todo, incluso la última barra inclinada. –
@Dennis: Ok, gracias; pero en ese caso, ciertamente no quiero usar solo el nombre del archivo como parte de la URL, ya que diferentes conjuntos de parámetros GET deberían dar como resultado que se almacenen/recuperen diferentes archivos. – Bambax