0
点赞
收藏
分享

微信扫一扫

自己用curl写一个断点续传工具(windows安装Git Bash环境也可以用)

c一段旅程c 2022-02-24 阅读 29

自己用curl写一个断点续传工具(windows安装Git Bash环境也可以用)

起因

公司内网太垃圾,名义上是全国所有公司都用一个内网,但是不同地区之间的网速真是无语,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
举报

相关推荐

0 条评论