wget을 사용하여 성공적으로 완료된 다운로드를 기록하는 방법

wget을 사용하여 성공적으로 완료된 다운로드를 기록하는 방법

저는 xargs를 사용하여 많은 수의 파일을 병렬로 다운로드하고 있습니다. 내가 겪고 있는 문제는 일부 다운로드가 잠시 후 실패한다는 것입니다. 따라서 목록을 실행하면 모든 다운로드가 성공적으로 완료되지 않아 명령을 다시 실행해야 합니다.

cat links.txt | xargs -n 2 -P 16 wget -c -q -O

성공적으로 다운로드한 파일명을 파일로 출력하는 방법이 있나요? 내가 찾을 수 있는 유일한 해결책은 wget 로그 파일을 구문 분석하는 것입니다.

답변1

대신 GNU 병렬을 사용하십시오 xargs.

cat links.txt | parallel --joblog my.log -n 2 -P 16 wget -c -q -O

이제 Exitval의 열을 살펴보세요 my.log.

종료 값으로 재시도하려는 경우 GNU Parallel에는 작업을 재시도하는 옵션이 있습니다: --retries, 및 --retry-failed.

답변2

wget 또는 해당 로그의 출력을 구문 분석하는 것이 유효합니다. 예를 들어,

$ wget -O fixedgear.html https://www.sheldonbrown.com/fixedgear.html 2>&1 | \
    awk '/saved/ { print $6 }' | \
    sed -e 's/^.//' -e 's/.$//'
README.md

파이프라인의 첫 번째 단계에서는 파일 다운로드를 시도하고, 두 번째 단계에서는 wget을 찾아 파일이 성공적으로 저장되었음을 선언하고 출력하는 경우, 마지막 단계에서는 파일 이름에서 따옴표를 제거합니다.

--trieswget 및 n의 값을 조정하면 --waitretry초기 병렬 다운로드가 처음 성공하는 데 도움이 될 수도 있습니다.

관련 정보