Reintento persistente reanudando descargas con curl


17

Estoy en una Mac y tengo una lista de archivos que me gustaría descargar de un servidor ftp. La conexión es un poco defectuosa, por lo que quiero que vuelva a intentarlo y se reanude si se corta la conexión.

Sé que puedo hacer esto con wget, pero desafortunadamente Mac OS X no viene con wget. Podría instalarlo, pero para hacerlo (a menos que me haya perdido algo) primero necesito instalar XCode y MacPorts, lo que me gustaría evitar.

Curl está disponible, aunque parece, pero no sé cómo funciona o cómo usarlo realmente. Si tengo una lista de archivos en un archivo de texto (una ruta completa por línea, como ftp: // user: pass @ server / dir / file1 ), ¿cómo puedo usar curl para descargar todos esos archivos? ¿Y puedo obtener rizos para nunca rendirme? ¿Como, volver a intentar infinitamente y reanudar las descargas donde lo dejó y tal?

Respuestas:


20

Después de buscar en Google y hombre y por un tiempo he descubierto una solución que me funcionó:

curl ftp://server/dir/file[01-30].ext --user user:pass -O --retry 999 --retry-max-time 0 -C -
  • [01-30] hará que descargue 30 archivos llamados file01.ext, file02.ext, etc.
  • --user user:pass debería ser obvio
  • -O para dar salida a archivos con nombre original
  • --retry 999 reintentar 999 veces
  • --retry-max-time 0para evitar que se agote el tiempo de las devoluciones. El comportamiento predeterminado si no especifica un retardo de reintento fijo es dormir primero un segundo entre reintentos y luego duplicarlo hasta que llegue a 10 minutos. entre reintentos
  • -C -para que continúe donde cayó (si ejecuta el comando nuevamente). El guión luego le dice que descubra dónde reanudar

Si alguien sabe cómo obtener los nombres de archivo de un archivo, hágamelo saber.


En la página del manual dice lo siguiente:

--url <URL>
Especifica una URL para buscar. Esta opción es principalmente útil cuando desea especificar URL (s) en un archivo de configuración.

Parece que eso podría ser algo, pero no entiendo cómo se usaría ...


2

Puede usar la opción -K para curlizar y especificar un archivo de configuración. En ese caso, usa la sintaxis:

optionname=<value>

Si tiene un archivo que contiene una lista de URL, puede usar curl así:

sed 's/\(.*\)/-O\nurl=\1/g' url_list.txt | curl -K -

que transforma una lista de URL, como:

http://host1.com/foo.html
http://host2.com/bar.html

en un formato como este:

-O
url=http://host1.com/foo.html
-O
url=http://host2.com/bar.html

Curl lee eso e interpreta cada una de esas opciones similares.

HTH

Adán

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.