
Estoy escribiendo un script bash para descargar periódicamente un archivo de instalación usando cURL. El problema es el siguiente, el archivo tiene alrededor de 110 MB y siempre tiene el mismo nombre.
Puedo descargar el archivo, verificar su hash (md5, sha1) y compararlo con un archivo descargado previamente:
- si el hash es igual, el archivo es el mismo y no se ha actualizado: en este caso lo he descargado sin motivo alguno.
- si el hash es diferente, el archivo en el servidor web es una versión nueva: en este caso, uso este archivo y lo actualizo a la nueva versión.
Me gustaría ejecutar este script cada media hora y me molesta descargar 110 MB gratis (la misma versión del archivo).¿Hay alguna manera de descargar los primeros 500 KB usando curl en la línea de comando?
Mi solución actual es comparar el tamaño del encabezado HTTP, pero aún así me gustaría tener una respuesta a la pregunta anterior y saber si esto es factible. Muchas gracias.
rizo -sI 'http://dominio.tld/uri/updater/getLatest.etcenter?c=var&asi=allright' -H 'Host: dominio.tld' -H 'Agente de usuario: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) como Gecko' -H 'Aceptar: texto/html,aplicación/xhtml+xml ,aplicación/xml;q=0.9,/;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate, br' -H 'DNT: 1' -H 'Conexión: keep-alive ' | grep 'Contenido-Longitud:'
Respuesta1
¿Puede confiar en las fechas de modificación de su archivo tanto en el cliente como en el servidor? Si es así, puede utilizar la funcionalidad "GET condicional"/"If-Modified-Since" de HTTP con la opción curl
' -z
. No es necesario descargar nada en absoluto. Esta es una funcionalidad incorporada del protocolo HTTP que se ha utilizado mucho en todas partes desde el principio.
No es necesario descargar nada si la fecha de modificación del archivo en el servidor no es más reciente que la del archivo que descargó la última vez.
Para su bash
script, considere usar stat(1)
para encontrar la hora de modificación del archivo local, para que pueda introducir esa información en curl -z …
.