컬 스크립트 - 다운로드가 완료될 때까지 기다립니다.

컬 스크립트 - 다운로드가 완료될 때까지 기다립니다.

다음은 웹사이트에서 파일을 다운로드하기 위해 매일 사용하는 스크립트의 일부입니다. 그러나 최근에는 파일 다운로드 속도 제한을 높였습니다. 절전 시간을 늘렸지만 다른 모든 작업은 너무 오래 걸리고 다운로드할 파일이 많고 일부는 매우 작습니다.

대기 시간을 제거 sleep하거나 매우 낮게 설정하고 파일 다운로드가 완료될 때까지 기다리도록 스크립트를 수정하고 싶습니다.

편집하다:

대용량 파일 다운로드가 완료되지 않는 이유를 찾았습니다. Failure when receiving data from the peer이 문제를 어떻게 해결할 수 있나요? wget으로 전환하는 것이 최선의 선택이라는 것을 읽었습니다. 그런데 이 스크립트가 wget에서 어떻게 작동합니까?

#check directories are empty, not empty if there was a problem last time
cd /home/user/upload
if [ "$(ls -A /home/user/upload)" ]; then
#     echo 'Directory not empty error for csv manipulation' | /bin/mailx -s "Server scrapeandcleandomains error" use
     echo "$(date) Directory /home/user/upload not empty for csv manipulation"  >> /home/user/logfile
     exit 1
     else
     echo $(date) starting normal >> /home/user/logfile
fi

#create yesterday variable
yesterday=$(echo  $(date --date="$1 - 2 days" +"%Y_%m_%d" ) )
#$(date --date="-2 day" +"%Y_%m_%d")







#download .csv.gz files (old wget command) OBSOLETE!!!!!
#cd /home/user/upload
#wget -R html,"index.*" -A "$yesterday*.csv.gz" -N -r -c -l1 -nd --no-check-certificate --user USERNAME --password PASSWORD -np http://www.websitedownloadfrom.com/sub/
#exit 1

#download index and sanitize > index2.tmp
cd /home/user
curl -u "USERNAME:PASSWORD" -k  http://www.websitedownloadfrom.com/sub/ -o index.html.tmp
links -dump index.html.tmp > /home/user/index.tmp
#this will work until 2049 ONLY!!
sed -i '/20[1-4][0-9]/!d' index.tmp
sed -i '/\[DIR\]/d' index.tmp
for i in {1..50} ; do
   sed -i 's/  / /' index.tmp
done

awk -F" " '{ print $3 }' index.tmp > index2.tmp
sed -i "/^${yesterday}/!d" index2.tmp







#download .csv.gz files according to index2.tmp
while read F  ; do
    cd /home/user/upload
    curl -u "USERNAME:PASSWORD" -k  http://www.websitedownloadfrom.com/sub/$F -o $F &
    sleep 80
done < /home/user/index2.tmp

sleep 60

#check that we downloaded something
cd /home/user/upload
if ! [ "$(ls -A /home/user/upload)" ]; then
    echo 'nothing downloaded from upload'  >> /home/user/logfile
    rm -f /home/user/upload/*
    rm -f /home/user/index.html.tmp
    rm -f /home/user/index.tmp
    rm -f /home/user/index2.tmp
    exit 1
fi

답변1

sleep 80명령과 바로 앞의 명령을 삭제하십시오 &. 이를 curl제거하면 다음 주기를 계속하기 전에 &스크립트가 다운로드가 완료될 때까지 기다리게 됩니다 .curl

관련 정보