En el caso de tener problemas a mitad de descarga de un archivo con wget o cURL, podemos reanudar la descarga en lugar de empezar a bajar de nuevo el archivo desde 0.
Reanudar descarga con wget
Vamos a ver el ejemplo práctico con wget. Iniciamos una descarga como lo haríamos normalmente, wget seguido de la URL:
$ wget http://mirror.codigo23.net/pub/OpenBSD/5.5/amd64/cd55.iso --2014-09-19 11:52:40-- http://mirror.codigo23.net/pub/OpenBSD/5.5/amd64/cd55.iso Resolving mirror.codigo23.net... 212.89.9.154 Connecting to mirror.codigo23.net|212.89.9.154|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 8787968 (8,4M) [application/octet-stream] Saving to: `cd55.iso' 20% [=======================================> ] 1.793.752 1,05M/s ^C
Como podéis ver, he cancelado la descarga con un CTRL + C cuando se encontraba al 20%. Es lo mismo que si por lo que sea perdemos la conexión a Internet, se apaga el equipo en el que estamos descargando, etc. Si hacemos un ls vemos el archivo incompleto:
$ ls -ltrh -rw-r--r-- 1 alex alex 1,9M 2014-09-19 18:52 cd55.iso
¿Cómo puedo reanudar la descarga sin empezar desde el principio? Si usaramos «wget + URL» de nuevo, la descarga comenzaría de 0. En cambio, si usamos el parámetro «–continue» o «-c» wget continúa donde lo habíamos dejado. Se puede observar la diferencia en la barra de progreso del contenido que ya estaba descargado «++++++» del que se está descargando «======»:
$ wget --continue http://mirror.codigo23.net/pub/OpenBSD/5.5/amd64/cd55.iso --2014-09-19 11:53:16-- http://mirror.codigo23.net/pub/OpenBSD/5.5/amd64/cd55.iso Resolving mirror.codigo23.net... 212.89.9.154 Connecting to mirror.codigo23.net|212.89.9.154|:80... connected. HTTP request sent, awaiting response... 206 Partial Content Length: 8787968 (8,4M), 6821904 (6,5M) remaining [application/octet-stream] Saving to: `cd55.iso' 77% [++++++++++++++++++++++=========================> ] 6.843.952 557K/s eta 2s
Reanudar descarga con cURL
Vamos a descargar el mismo archivo que antes pero con cURL, cortando la descarga antes de finalizar:
$ curl http://mirror.codigo23.net/pub/OpenBSD/5.5/amd64/cd55.iso -O % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 30 8582k 30 2590k 0 0 796k 0 0:00:10 0:00:03 0:00:07 807k ^C
Para reanudar la descarga, en lugar de volver a utilizar «cURL + URL + Archivo de destino» tenemos varias opciones. Una es poco usable ya que requiere especificar el offset (número de bytes a partir del cual empezar a descargar):
-C/--continue-at Resumed transfer offset
$ curl -C 10231 http://mirror.codigo23.net/pub/OpenBSD/5.5/amd64/cd55.iso -O cd55.iso
Vamos a hacerlo sencillo y que el offset se calcule automáticamente, para ello usamos «-C -«:
$ curl -C - http://mirror.codigo23.net/pub/OpenBSD/5.5/amd64/cd55.iso -O ** Resuming transfer from byte position 4481024 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 4206k 100 4206k 0 0 1875k 0 0:00:02 0:00:02 --:--:-- 1917k
Si os fijáis en la salida del comando, indica lo siguiente:
** Resuming transfer from byte position 4481024
Así que ya sabéis, a ahorrar ancho de banda, transferencia de datos y tiempo cuando descargáis archivos grandes y se os corta la descarga a mitad.