起因
公司内网太垃圾,名义上是全国所有公司都用一个内网,但是不同地区之间的网速真是无语,50K/秒,这是回到拨号时代了吗。要把一个1G的wps企业版文件从其他城市下载到本地,靠浏览器基本没戏,断了n次后就放弃了。只能通过断点续传了,但是不想装迅雷之类的,想着自己搞一个断点续传弄一下就可以了。
文件准备
因为原始的文件是在公司云盘上,貌似不支持断点续传,主要是懒得实验,就先在其他城市的服务器上下载好文件,然后搭建nginx,作为文件服务器。nginx的配置如下:
server {
listen 888;
server_name localhost;
location /files {
alias D:\Download\files;
autoindex on;
}
}
用浏览器试一下,应该可以看到文件了:
http://10.10.10.10:888/files
本机下载的脚本
一个简单的bash脚本,用到了awk和curl,都是基础命令,windows下完全可以不用装cygwin,直接下载、安装git bash就可以了。
URL=http://10.10.10.10:888/files/wps.zip
FNAME=wps.zip
BLOCKSIZE=`echo | awk '{print 1024*1024}'`
POS=0
DONE=0
touch $FNAME
rm $FNAME
while [ "$DONE" != "1" ]
do
POS2=`echo $POS $BLOCKSIZE | awk '{print $1+$2-1}'`
curl $URL -r $POS-$POS2 > $FNAME.part
if (( $? ))
then
echo fail, try again...
sleep 1
continue
fi
CHECK=`grep "Requested Range Not Satisfiable" $FNAME.part`
if [ "$CHECK" != "" ]
then
DONE=1
echo finish...
else
cat $FNAME.part >> $FNAME
POS=`echo $POS $BLOCKSIZE | awk '{print $1+$2}'`
fi
ls -la $FNAME
done