você pode usar
curl -L -O --retry 999 --retry-max-time 0 -C - http://url
-
--retry 999
: repetindo tantas vezes -
--retry-max-time 0
: evitar de tempo limite em tentar novamente
ou
curl -L -o 'filename' -C - http://url
Atualizar
export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "http://www.example.com/big-archive.zip"; export ec=$?; done
Explicação:
O mandril de curl de código de saída quando um download é interrompido é 18, e $?
fornece o código de saída do último comando no bash. Portanto, embora o código de saída seja 18, continue tentando fazer o download do arquivo, mantendo o nome de arquivo (-O)
e continuando onde o download anterior foi interrompido (-C)
.
Minha preferência pessoal seria usar wget
, que foi criado especificamente para esse caso de uso. Na página do 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á disponível para quase todas as distribuições do Linux - provavelmente já está instalado no seu. Basta usar wget
para baixar o arquivo, ele restabelecerá a conexão de rede até que o arquivo seja completamente transferido.