linux samba 断点续传,利用cURL实现单个文件分多段同时下载,支持断点续传
下面是代码:(转自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实现单个文件分多段同时下载,支持断点续传相关推荐
- 打印 上一主题 下一主题 利用cURL实现单个文件分多段同时下载,支持断点续传(修订版)...
利用cURL实现单个文件分多段同时下载,支持断点续传(修订版) [复制链接] 摘自 http://bbs.chinaunix.net/thread-917952-1-1.html 在ubuntu下 ...
- Android实现网络下载一(单任务下载--支持断点续传)
Android实现网络下载一(单任务下载–支持断点续传) 说起下载,在Android的一些类似游戏宝的项目中会频繁使用,比如说需求要下载一个apk文件,并且要支持暂停.继续等要求.当然在GitHib上 ...
- Android实现网络下载二(多任务下载--支持断点续传)
Android实现网络下载二(多任务下载–支持断点续传) 上文中说了单任务的断点续传,这篇文章就说说多任务下载,不啰嗦了,直接进入正题. 附上demo源码,GitHub代码后续上传,这里的链接还是cs ...
- php抓取curl下载文件,PHP 利用 Curl 函数实现多线程抓取网页和下载文件
PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Cur ...
- Go 如何利用multipart/form-data实现文件的上传与下载
转载地址:https://mp.weixin.qq.com/s/OHzXxfcBaf5RNT4dA38LCQ 1. Form简介 Form(中文译为表单)[1],是HTML标记语言中的重要语法元素.一 ...
- 一文搞懂如何利用multipart/form-data实现文件的上传与下载
1. Form简介 **Form**(中文译为表单)[1],是HTML标记语言中的重要语法元素.一个Form不仅包含正常的文本内容.标记等,还包含被称为控件的特殊元素.用户通常通过修改控件(比如:输入 ...
- php - 基于 webuploader 视频大文件分片分段上传,支持断点续传(刷新、关闭页面、重新上传、网络中断等情况)带进度条,前端后端都有示例源码详细教程
效果图 文件上传前先检测该文件是否已上传,如果已上传提示 "文件已存在",如果未上传则直接上传. 基于 php+webuploader的大文件分片上传,带进度条,支持断点续传(刷新 ...
- 自己写的一个简单的迅雷下载支持断点续传
当我学习了网络线程,就自己仿照迅雷下载写了一个下载器,支持断点续传 我用的是SWT插件做的界面 界面 package com.yc.xunlei; import java.io.File; impor ...
- 【 Linux学习】Linux环境下利用OpenSSL对大文件进行AES加解密
一.背景 之前的几篇博客已经介绍了Gitlab如何备份恢复与迁移已经脚本监控过程等. git学习--> Gitlab如何进行备份恢复与迁移? http://blog.csdn.net/ouyan ...
- linux系统打开m3u8文件,linux:m3u8:如何从.m3u8中列出的段手动下载...
我有一个.m3u8 url,即http://example.com/test.m3u8 我可以通过ffmpeg命令下载它: ffmpeg -y -loglevel verbose -i "h ...
最新文章
- es filter过滤器_Elasticsearch 之 Filter 与 Query 有啥不同?
- 构建在线教育弹性高可用视频处理架构实战
- 浅谈分布式一致性协议之2PC
- 【flink】flink 报错 key group from 44 to 45 does not contain 4
- 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)
- 用php动态创建图像,php利用imagecreatetruecolor动态生成高清图片代码
- 从零基础入门Tensorflow2.0 ----五、20. 预定义estimator使用
- 《SAP从入门到精通》——第1章 SAP系统基本概念 1.1 SAP公司及其产品介绍
- SD卡--摄像头中扩容卡原理及检测机制
- 史上最强的MSN聊天记录!
- 解决eNSP“错误代码40”及AR设备启动失败问题
- java双层list扁平化,浅谈java8 stream flatMap流的扁平化操作
- 美国计算机专业gre314,托福89,GRE 314获南加大计算机录取
- python123格式化输出_python 字符串格式化输出 %d,%s及 format函数
- 单出口双防火墙双核心冗余_铁路无线网络基站冗余(4)LTER
- 目前国内公开的手机号段 | 正则资料库
- Wireshark 保存过滤后的报文
- 改善交互动效设计 实例
- sql server 安装挂起
- 数字基带传输系统——数字基带信号