完全用curl命令实现
支持http和ftp协议
默认是5只蚂蚁一起工作
下载完毕后会自动计算md5
因为是土制工具所以实在不敢确保正确(我测试过下载36M的linux kernel没有问题)
不需要的话可以自己去掉
此程序依然保持掉渣的土风格
晕。。。。怎么代码贴上来都乱套了阿。。。。。
#!/bin/bash
PART=part #temp file prefix
FILE=
declare -i ANT=5 #how many ant?
#Usage
if [ $# -eq 0 ]; then
echo "Usage: URL
echo -e "\t\tURL: such as http://www.google.com"
echo -e "\t\t
exit 1
fi
if [ $# -gt 1 ]; then
ANT=
fi
#check if file is available and get file size
LENS=`curl -I $FILE 2>/dev/null | grep "Content-Length" | awk '{print }' | sed -e 's/\r//g'`
echo "---$---"
if [ $ -eq 0 ]; then
echo "Can not access <>"
exit 2
fi
echo "File size: ---$----"
#if [ $LENS -lt 3072 ]; then
# ANT=1 #we just need 1 ant if file size < 3k
#fi
#do download
declare -i PIECE=$/$+$
declare -i start=0
declare -i end=-1
declare -i THREAD=1
while [ $THREAD -le $ANT ]; do
start=$+1
end=$*$
curl -r $-$ -o $$ $FILE 1>/dev/null 2>/dev/null && touch "Part$OK" &
#echo "[$ANT][$PIECE][$start][$end][$THREAD]"
THREAD=$+1
done
#check if all OK
THREAD=1
while [ $THREAD -le $ANT ]; do
if [ ! -f Part$OK ]; then
THREAD=1
continue
fi
THREAD=$+1
done
#merge scrap
THREAD=2
while [ $THREAD -le $ANT ]; do
cat $$ >> $1
THREAD=$+1
done
#rename file
mv $1 $
md5sum $
#clean temp file
THREAD=1
while [ $THREAD -le $ANT ]; do
rm -f $$ Part$OK
THREAD=$+1
done