linux - picard - puddletag
¿Cómo reanudar la descarga interrumpida automáticamente en curl? (3)
Puede verificar el código de salida en un ciclo de tiempo y reanudar hasta que el código de salida indique que la descarga se realizó correctamente:
export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "http://www.example.com/a-big-archive.zip"; export ec=$?; done
El ejemplo está tomado de http://ilovesymposia.com/2013/04/11/automatically-resume-interrupted-downloads-in-osx-with-curl/
Estoy trabajando con curl
en Linux. Estoy descargando una parte de un archivo en el servidor ftp (usando la opción -r
), pero mi conexión no es buena, siempre se interrumpe. Quiero escribir un script que reanude la descarga cuando estoy conectado de nuevo.
He usado este comando, pero no funciona:
until curl -r 666-9999 -C - --retry 999 -o "path/to/file" "ftp:/path/to/remote/file"; do :; done
wget ha sido construido específicamente para este caso de uso. De la página del manual:
Wget has been designed for robustness over slow or unstable network connections;
if a download fails due to a network problem, it will keep retrying until the
whole file has been retrieved. If the server supports regetting, it will
instruct the server to continue the download from where it left off.
wget está disponible para casi todas las distribuciones de Linux, probablemente ya esté instalado en la suya. Simplemente use wget para descargar el archivo, se restablecerá la conexión de red hasta que el archivo se transfiera completamente.
curl -L -O your_url
Esto descargará el archivo.
Ahora digamos que se interrumpe su conexión;
curl -L -O -C - your_url
Esto continuará descargando desde el último byte descargado
De la página del manual:
Use "-C -" para decirle a curl que descubra automáticamente dónde y cómo reanudar la transferencia. A continuación, utiliza los archivos de salida / entrada dados para darse cuenta de eso.