клепаю скрипт, который будет качать файл с инета кусочками, после чего склеивать.


bliznezz аватар

bliznezz - Posted on 08 Апрель 2009

проблема - прокси сходит с ума когда объект который надо тянуть - больше 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 =)
своим скриптам не доверю выполнять эту команду)))

А многопоточные качалки не помогут в данной беде?

есть такая украинская поговорка "пан мае час та натхнення" =)

скрипт из этого клепаю только ради скрипта))

А нафига так сложно? wget -c с низким таймаутом спасет

Открою заодно секрет - seq не работает с целыми числами. Не верите? Проверьте:
$ i=100000000000000000000; seq $i $(echo $i + 10 | bc)
100000000000000000000
100000000000000000000
100000000000000000000
100000000000000000000
100000000000000000000
100000000000000000008
100000000000000000008
100000000000000000008
100000000000000000008
100000000000000000008
100000000000000000008
100000000000000000008

Цитата:
А нафига так сложно? wget -c с низким таймаутом спасет

не спасает, мой прокс с парентом не могут договориться по-нормальному

ну и зарепортил бы баг

Это не баг, а малоизвестная фича. man 1 seq вполне прозрачно на это намекает.

У себя в блоге чуть-чутьподробнее написал.

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.