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

博主因公司内网速度慢,利用GitBash和curl在Windows环境下自制了一个断点续传工具。首先在远程服务器上搭建nginx文件服务器,然后编写一个bash脚本,结合awk和curl进行文件下载,实现断点续传功能,避免了安装额外软件的麻烦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己用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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值