curl로 다운로드 재개를 지속적으로 재시도 그렇게하기 위해서는 (뭔가를 놓친 경우가 아니라면)

나는 Mac에 있고 ftp 서버에서 다운로드하려는 파일 목록이 있습니다. 연결이 약간 버그가 있으므로 연결이 끊어지면 다시 시도하고 다시 시작하고 싶습니다.

wget 으로이 작업을 수행 할 수 있지만 불행히도 Mac OS X에는 wget이 제공되지 않습니다. 나는 그것을 설치할 수는 있지만 그렇게하기 위해서는 (뭔가를 놓친 경우가 아니라면) XCode와 MacPorts를 먼저 설치해야합니다.

컬은 보이지만 사용할 수는 있지만 어떻게 작동하는지 또는 실제로 사용하는 방법을 모르겠습니다. 텍스트 파일에 파일 목록이있는 경우 ( ftp : // user : pass @ server / dir / file1 과 같이 한 줄에 하나의 전체 경로 ) curl을 사용하여 모든 파일을 어떻게 다운로드 할 수 있습니까? 그리고 절대 포기하지 말라고 컬을 할 수 있습니까? 예를 들어, 무한 재 시도하고 중단 된 위치에서 다운로드를 다시 시작 하시겠습니까?



답변

인터넷 검색 및 사람 독서 등을 한 동안 나는 나를 위해 일한 해결책을 알아 냈습니다.

curl ftp://server/dir/file[01-30].ext --user user:pass -O --retry 999 --retry-max-time 0 -C -
  • [01-30] file01.ext, file02.ext 등 30 개의 파일을 다운로드하게합니다.
  • --user user:pass 명백해야한다
  • -O 원래 이름의 파일로 출력
  • --retry 999 999 번 재시도
  • --retry-max-time 0재시도 시간이 초과되지 않도록합니다. 고정 된 –retry-delay를 지정하지 않은 경우 기본 동작은 재시도간에 처음 1 초간 절전 모드를 유지 한 다음 10 분에이를 때까지 두 배로 늘리는 것입니다. 재시도 사이
  • -C -삭제 한 곳에서 계속 (명령을 다시 실행하는 경우) 계속하십시오. 그 후 대시는 어디에서 다시 시작할지 알아 내라고 알려줍니다.

누군가 파일 대신 파일 이름을 얻는 방법을 알고 있다면 알려주십시오.


매뉴얼 페이지에서 다음과 같이 말합니다.

–url <URL>
가져올 URL을 지정하십시오. 이 옵션은 구성 파일에서 URL을 지정하려는 경우 주로 유용합니다.

그런 것 같지만 사용 방법을 잘 모르겠습니다 …


답변

-K 옵션을 사용하여 구성 파일을 지정하기 위해 curl 할 수 있습니다. 이 경우 다음 구문을 사용하십시오.

optionname=<value>

URL 목록이 포함 된 파일이 있으면 다음과 같이 curl을 사용할 수 있습니다.

sed 's/\(.*\)/-O\nurl=\1/g' url_list.txt | curl -K -

다음과 같이 URL 목록을 변환합니다.

http://host1.com/foo.html
http://host2.com/bar.html

다음과 같은 형식으로 :

-O
url=http://host1.com/foo.html
-O
url=http://host2.com/bar.html

Curl은 이것을 읽고 옵션과 같은 각각을 해석합니다.

HTH,

아담