клепаю скрипт, который будет качать файл с инета кусочками, после чего склеивать.
проблема - прокси сходит с ума когда объект который надо тянуть - больше 2гб.
проблема из-за того что у этогопрокси есть парент, на котором стоит интерскан, он стягивает себе объект целиком, шерстит и в случае если все ок - возвращает его мне.
как правило клиент начинает тянуть, думает, думает, потом коннекшн дохнет =/
в тоже время если я запрошу объект не целиком а кусочек, на пример 100мб - то все ок.
черновой вариант скрипта такой:
#!/bin/bash CMD="curl -x proxy:8080 " URL="http://linux.mirrors.es.net/centos/5.3/isos/x86_64/CentOS-5.3-x86_64-bin-DVD.iso" FILENAME=$(basename $URL) # section size SSIZE=$((1024*1024*100)) #HEADER_LEN=$(curl -I -x proxy:8080 $URL | grep Content-Length) #[ $? ] && echo "err: unknow size" > /dev/stderr ; exit 1 ; # object size #OSIZE=${HEADER_LEN/#"Content-Length: "/}; #variant2. #OSIZE=$( echo $HEADER_LEN | cut -d\ -f2 ) OSIZE=4557455360 export SSIZE OSIZE I=0 for BEG in $(seq 0 $SSIZE $OSIZE) ; do. I=$((I+1)) ( [[ $BEG -eq 0 ]] && echo $CMD --range $BEG-$(( BEG + SSIZE -1 )) -o $FILENAME.${I} "$URL" ) || \ ( [[ $((BEG+SSIZE)) -le $OSIZE ]] && echo $CMD --range $BEG-$(( BEG + SSIZE -1 )) -o $FILENAME.${I} "$URL" ). [[ $((BEG+SSIZE)) -ge $OSIZE ]] && echo $CMD --range $BEG- -o $FILENAME.${I} "$URL" ; done echo "rm -f $FILENAME " for J in `seq 0 $I` ; do. echo "cat $FILENAME.${J} >> $FILENAME" done
всё... он генерит скрипт для закачки. генерит а не выполняет, потому что среди прочего есть такая интересная команда - rm =)
своим скриптам не доверю выполнять эту команду)))
- bliznezz's blog
- 2264 просмотра


А многопоточные качалки не помогут в данной беде?
есть такая украинская поговорка "пан мае час та натхнення" =)
скрипт из этого клепаю только ради скрипта))
А нафига так сложно? wget -c с низким таймаутом спасет
Открою заодно секрет - seq не работает с целыми числами. Не верите? Проверьте:
$ i=100000000000000000000; seq $i $(echo $i + 10 | bc)
100000000000000000000
100000000000000000000
100000000000000000000
100000000000000000000
100000000000000000000
100000000000000000008
100000000000000000008
100000000000000000008
100000000000000000008
100000000000000000008
100000000000000000008
100000000000000000008
не спасает, мой прокс с парентом не могут договориться по-нормальному
ну и зарепортил бы баг
Это не баг, а малоизвестная фича.
man 1 seqвполне прозрачно на это намекает.У себя в блоге чуть-чутьподробнее написал.
Отправить комментарий