연결이 잘못된 경우 큰 파일을 다운로드하는 데 사용할 수있는 기존 도구가 있습니까?
상대적으로 작은 파일 인 300MB를 정기적으로 다운로드해야하지만 느린 (80-120KBytes / sec) TCP 연결은 10-120 초 후에 임의로 중단됩니다. (이 회사는 대기업 네트워크입니다. 우리는 관리자 (인도에서 근무)에게 여러 번 연락했지만 아무것도 할 수 없거나 원하지 않는 일입니다.) 리버스 프록시 /로드 밸런서에 문제가있을 수 있습니다.
지금까지 pcurl의 수정 된 버전을 사용했습니다 : https://github.com/brunoborges/pcurl
나는이 줄을 바꿨다.
curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
이에:
curl -s --retry 9999 --retry-delay 3 --speed-limit 2048 --speed-time 10 \
--retry-max-time 0 -C - --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
--speed-limit 2048 --speed-time 10
연결이 실패하면 대부분 몇 분 동안 연결이 끊어지기 때문에 추가 해야했습니다.
그러나 최근에는이 스크립트조차 완료 할 수 없습니다.
한 가지 문제는 -C -
부품 을 무시하는 것처럼 보이 므로 재시도 후에 세그먼트를 "계속"하지 않는다는 것입니다. 관련 임시 파일을 자르고 각 실패 후 처음부터 시작하는 것 같습니다. ( --range
와 -C
옵션을 함께 사용할 수 없다고 생각합니다 .)
다른 문제는이 스크립트가 모든 세그먼트를 동시에 다운로드한다는 것입니다. 한 번에 10 개만 다운로드되는 300 개의 세그먼트를 가질 수 없습니다.
이 특정 목적을 위해 C #으로 다운로드 도구를 작성하려고 생각했지만 기존 도구가 있거나 curl 명령이 다른 매개 변수로 제대로 작동하면 시간을 절약 할 수 있습니다.
업데이트 1 : 추가 정보 : 병렬 다운로드 기능은 연결 당 대역폭 제한 (80-120KB / 초, 대부분 80)이 있으므로 제거하면 안됩니다. 따라서 10 개의 연결은 10 배 속도를 높일 수 있습니다. 파일이 매시간 생성되므로 1 시간 안에 파일 다운로드를 완료해야합니다.
rsync
(전송을 다시 시작할 수있게 하시겠습니까)?lftp
전송을 자동으로 다시 시작할 수도 있습니다.