중단된 "curl" 다운로드 재개

중단된 "curl" 다운로드 재개

네트워크를 통해 대용량 파일을 다운로드하고 있습니다. 다운로드하는 동안(예: 40%) 기본 머신은 네트워크에서 연결이 끊어지고 curl종료되기 전에 네트워크가 연결됩니다. 하지만 이 경우 컬은 프로세스를 재개하지 않습니다.

결국 컬은 그만뒀습니다.

curl중단된 다운로드를 재개하는 데 도움이 되는 스위치는 무엇 입니까?

편집 : 문제에 대한 추가 설명

18:43:20 PM    SHW@SHW:/tmp # curl http://ip-address.com/BigFile
18:43:40 PM                   <Downloading in progress>
18:43:50 PM                   <Downloading in progress>
18:44:10 PM                   <network get disconnected>
18:44:20 PM                   <Downloading get stuck>
18:44:30 PM                   <Network get connected>
18:44:40 PM                   <DOWNLOAD MUST RESUME NOW>      <==

위의 타임스탬프를 기준으로 시작된 프로세스를 종료하기 전에 다운로드를 재개하고 싶습니다 curl.curl컬 명령을 다시 실행하고 싶지 않습니다.

답변1

당신은 그것을 사용할 수 있습니다

curl -L -O --retry 999 --retry-max-time 0 -C - http://url
  • -C -: 마지막 다운로드가 중단된 지점부터 다시 시작
  • --retry 999: 여러 번 다시 시도했습니다.
  • --retry-max-time 0: 재시도 시간 초과 방지

또는

curl -L -o 'filename' -C - http://url

고쳐 쓰다

export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "http://www.example.com/big-archive.zip"; export ec=$?; done

설명하다:

다운로드가 중단되면 컬의 종료 코드는 18이고 $?bash의 마지막 명령 종료 코드를 제공합니다. 따라서 종료 코드가 18이면 파일 이름을 유지하면서 파일 다운로드를 계속 시도하십시오 (-O).


개인적으로 선호하는 것은 wget이 사용 사례를 위해 특별히 제작된 것을 사용하는 것입니다. 매뉴얼 페이지에서:

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거의 모든 Linux 배포판에서 사용할 수 있습니다. 이미 배포판에 설치되어 있을 수도 있습니다. 다운로드 파일을 사용하는 동안에는 wget파일 전송이 완료될 때까지 네트워크 연결이 다시 설정됩니다.

관련 정보