下面是代码:(转自CU)

(俺是新手,高手见笑)

用法:./mycurl url

#!/bin/bash

######################################################################################################

#

# Script for curl to support resumable multi-part download.

#

url=$1

exename=`basename $0`

# How many "parts" will the target file be divided into?

declare -i parts=5

read -ep "Please input the target directory: " targetdir

read -ep "Please input the outfile name: " outfile

[ -z "$targetdir" ] && targetdir="./"

cd $targetdir||exit 2

[ -z "$outfile" ] && outfile=`basename $1`

length=`curl -s -I $url|grep Content-Length|sed s/[^0-9]//g`

#length=`curl -s -I $url|grep Content-Length|awk '{print $2}'|sed s/[^0-9]//`

if [ -z "$length" ]; then

echo "cann't get the length of the target file"

exit 1

fi

let "length = $length"

declare -i lsession=$(($length/$parts))

finished="false"

while true;

do

declare -i curr=0

for (( i=1; i<=parts; i=i+1 ))

do

#To get how many bytes have been downloaded

if [ -e $outfile$i ]; then

offset=`ls -l $outfile$i|awk '{print $5}'`

else offset=0

fi

let "offset = $offset"

if [ $i -lt $parts ]; then

if [ $offset -lt $lsession ]; then

curl -r $(($curr+$offset))-$(($curr+$lsession-1)) $url >> $outfile$i &

fi

else

if [ $offset -lt $(($length-$(($lsession*$(($parts-1)))))) ]; then

curl -r $(($curr+$offset))- $url >> $outfile$i &

fi

fi

curr=$(($curr+$lsession))

done

#To judge if all curl threads have terminated.

while true;

do

hasCurl=`ps -A -o ppid,cmd|grep $$|grep -v "$exename"|grep -v "grep"|grep curl`

[ -z "$hasCurl" ] && break

sleep 10

done

finished="true"

for (( i=1; i<=$parts; i=i+1 ))

do

if [ -e $outfile$i ]; then

offset=`ls -l $outfile$i|awk '{print $5}'`

else offset=0

fi

let "offset = $offset"

if [ $i -lt $parts ]; then

if [ $offset -lt $lsession ]; then

finished="false"

break

fi

else

if [ $offset -lt $(($length-$(($lsession*$(($parts-1)))))) ]; then

finished="false"

break

fi

fi

done

if [ "$finished" == "true" ]; then

break

fi

done

echo "All parts have been downloaded. Merging..."

mv --backup=t $outfile"1" $outfile

for (( i=2; i<=$parts; i=i+1))

do

cat $outfile$i >> $outfile

rm $outfile$i

done

echo "Done."

linux samba 断点续传,利用cURL实现单个文件分多段同时下载,支持断点续传相关推荐

  1. 打印 上一主题 下一主题 利用cURL实现单个文件分多段同时下载,支持断点续传(修订版)...

      利用cURL实现单个文件分多段同时下载,支持断点续传(修订版) [复制链接] 摘自 http://bbs.chinaunix.net/thread-917952-1-1.html 在ubuntu下 ...

  2. Android实现网络下载一(单任务下载--支持断点续传)

    Android实现网络下载一(单任务下载–支持断点续传) 说起下载,在Android的一些类似游戏宝的项目中会频繁使用,比如说需求要下载一个apk文件,并且要支持暂停.继续等要求.当然在GitHib上 ...

  3. Android实现网络下载二(多任务下载--支持断点续传)

    Android实现网络下载二(多任务下载–支持断点续传) 上文中说了单任务的断点续传,这篇文章就说说多任务下载,不啰嗦了,直接进入正题. 附上demo源码,GitHub代码后续上传,这里的链接还是cs ...

  4. php抓取curl下载文件,PHP 利用 Curl 函数实现多线程抓取网页和下载文件

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Cur ...

  5. Go 如何利用multipart/form-data实现文件的上传与下载

    转载地址:https://mp.weixin.qq.com/s/OHzXxfcBaf5RNT4dA38LCQ 1. Form简介 Form(中文译为表单)[1],是HTML标记语言中的重要语法元素.一 ...

  6. 一文搞懂如何利用multipart/form-data实现文件的上传与下载

    1. Form简介 **Form**(中文译为表单)[1],是HTML标记语言中的重要语法元素.一个Form不仅包含正常的文本内容.标记等,还包含被称为控件的特殊元素.用户通常通过修改控件(比如:输入 ...

  7. php - 基于 webuploader 视频大文件分片分段上传,支持断点续传(刷新、关闭页面、重新上传、网络中断等情况)带进度条,前端后端都有示例源码详细教程

    效果图 文件上传前先检测该文件是否已上传,如果已上传提示 "文件已存在",如果未上传则直接上传. 基于 php+webuploader的大文件分片上传,带进度条,支持断点续传(刷新 ...

  8. 自己写的一个简单的迅雷下载支持断点续传

    当我学习了网络线程,就自己仿照迅雷下载写了一个下载器,支持断点续传 我用的是SWT插件做的界面 界面 package com.yc.xunlei; import java.io.File; impor ...

  9. 【 Linux学习】Linux环境下利用OpenSSL对大文件进行AES加解密

    一.背景 之前的几篇博客已经介绍了Gitlab如何备份恢复与迁移已经脚本监控过程等. git学习--> Gitlab如何进行备份恢复与迁移? http://blog.csdn.net/ouyan ...

  10. linux系统打开m3u8文件,linux:m3u8:如何从.m3u8中列出的段手动下载...

    我有一个.m3u8 url,即http://example.com/test.m3u8 我可以通过ffmpeg命令下载它: ffmpeg -y -loglevel verbose -i "h ...

最新文章

  1. es filter过滤器_Elasticsearch 之 Filter 与 Query 有啥不同?
  2. 构建在线教育弹性高可用视频处理架构实战
  3. 浅谈分布式一致性协议之2PC
  4. 【flink】flink 报错 key group from 44 to 45 does not contain 4
  5. 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)
  6. 用php动态创建图像,php利用imagecreatetruecolor动态生成高清图片代码
  7. 从零基础入门Tensorflow2.0 ----五、20. 预定义estimator使用
  8. 《SAP从入门到精通》——第1章 SAP系统基本概念 1.1 SAP公司及其产品介绍
  9. SD卡--摄像头中扩容卡原理及检测机制
  10. 史上最强的MSN聊天记录!
  11. 解决eNSP“错误代码40”及AR设备启动失败问题
  12. java双层list扁平化,浅谈java8 stream flatMap流的扁平化操作
  13. 美国计算机专业gre314,托福89,GRE 314获南加大计算机录取
  14. python123格式化输出_python 字符串格式化输出 %d,%s及 format函数
  15. 单出口双防火墙双核心冗余_铁路无线网络基站冗余(4)LTER
  16. 目前国内公开的手机号段 | 正则资料库
  17. Wireshark 保存过滤后的报文
  18. 改善交互动效设计 实例
  19. sql server 安装挂起
  20. 数字基带传输系统——数字基带信号

热门文章

  1. 最小生成树-Borůvka算法
  2. Mac用自带软件QuickTime Player进行录屏
  3. 项目中涉及到金钱的计算时,数据库字段的使用
  4. 屏幕缩放和注释工具(ZoomIt)
  5. CG CTF RE Py交易
  6. Unity Timeline自定义轨道 DefaultPlayables源码剖析
  7. [转]一些漢字、字體/字型、内碼、輸入法資料的整理
  8. bh1750采集流程图_基于BH1750的光照度检测)教程.doc
  9. 【深度学习】YOLOv7目标检测模型使用记录 yolov7-tiny
  10. [网易编程题] 涂棋盘