场景

超大文件现在还是蛮常用的,尤其使用第三方数据库(集)资料时,都需要先进行下载。这不一个朋友就遇到了这个需求:

100多个G,先不说电脑内存,就是硬盘一般人的办公电脑估计都得腾点空间出来,更别提下载了。即使能达到网速1M/s且保持不便,那也得30个小时吧,但是现实是几乎不太现实,因为网速很不稳定,如果网断了,没办法续传,需要重头开始下载,这就很难搞。so针对这种方式该怎么下载呢?

迅雷什么的是否可以下载我倒没有尝试? 不过看到过一个下载工具internetdownloadmanager(30天免费), 有兴趣的可以尝试下。这些工具先不说好不好用,绝大多数都需要VIP,甚至区分白金,黄金,钻石,星耀,王者,简直恶心死人。对于程序员,绝对不能惯着这些臭毛病,

思路:将大文件拆分成多个小文件单独下载,如果允许,你也可以多线程下载;下载完毕后,再将小文件们拼接在一起即可。

工具:Linux环境,curl, cat

难度: 对于程序员,几乎没有;对于非程序员,windows上安装curl工具比较靠谱点,也可以安装一个WSL子系统

操作步骤

1. 指定文件大小,逐个下载

比如我想下载那个100G的文件,准备拆分成100个文件,每个文件1G,然后使用curl工具分别下载,通过range指定下载文件的开始和结束位置:

curl --range 0-1024000000 -o test.part1 https://kero.hgc.jp/cgi-bin/download/long_read/adenocarcinoma_cell_lines/genome/promethion/LC2ad/PromethION_LC2ad_30x.sorted.bamcurl --range 1024000001-2048000000 -o test.part2 https://kero.hgc.jp/cgi-bin/download/long_read/adenocarcinoma_cell_lines/genome/promethion/LC2ad/PromethION_LC2ad_30x.sorted.bamcurl --range 2048000001-4096000000 -o test.part3 https://kero.hgc.jp/cgi-bin/download/long_read/adenocarcinoma_cell_lines/genome/promethion/LC2ad/PromethION_LC2ad_30x.sorted.bam... ...

1G = 1024 x 1024 x 1024 字节。 上面由于不想计算,so直接用0代替了,因此下载文件时单个文件不够1G

2. 文件拼接

文件拼接直接通过cat工具即可。他们会自己按照序号顺序进行拼接

 cat test.part? > aaa.bam

3. 验证文件完整性

很多正经的官网,提供系统镜像时会提供MD5,SHA完整性校验值,因此可以对拼接后的文件计算MD5值;如果一样,说明文件下载没有问题;如果不一样,说明文件下载有问题。

当然,如果没有提供相应的校验,那就不用验证了,直接看看下载的文件能否使用就知道了。因为如果文件有损坏,正常情况下是无法打开的。

4. 问题定位

我当时使用几个24M的小文件进行测试(分了3个文件下载),拼接后发现MD5不一样,于是乎我使用BeyondCompare工具把文件的二进制进行了比较:
比较后发现多了两个字节,后来发现是我range范围写重复导致的。重新修改了范围后,重新下载拼接发现是可行的。

后续

感觉可以去写一个下载工具了,支持并发下载大文件,哈哈哈

程序员的超大文件下载方法相关推荐

  1. 程序员保护眼睛的方法

    程序员保护眼睛的方法 将编程工具的主题改成黑色 将编程工具的字号调大 将电脑的主题调成黑色 使用大屏显示器 每工作20分钟远望20秒,每工作1小时离开座位(上厕所.接水) 1. 将编程工具的主题改成黑 ...

  2. 成为优秀程序员的8种方法

    成为优秀程序员的8种方法 是时候认真对待如何提高你的编程技能了.让我们开始吧! "成为一个牛逼的程序员"是一个看似很容易实现的职业生涯改进目标,但其实这并非是一个简单的目标.一方面 ...

  3. 软考程序员Java答题速成_软考程序员考试试题解答方法与技巧

    如果说程序员考试解上午题无技巧可言的话,那么解下午题就是70%的实力加30%的方法与技巧,若运用到极致的话,会是"四两拨千斤".下面就来看一下程序员下午题解题步骤和解题技巧,以供考 ...

  4. 黑马程序员 oc对象的方法成员变量

    -----------黑马程序员 IOS培训.Android培训.Java培训.期待与您交流---------------- #import <Foundation/Foundation.h&g ...

  5. 程序员学好英语的方法(转)

    英语对每个人来说都很重要,对于程序员来说尤其的重要,因为一些框架都是外国大佬写的,我们要时时的阅读 API,而这些 API 大多数都是英文了,所以我们程序员对英语的要求还是蛮高的.下面我整理的一些学习 ...

  6. 让程序员大跌眼镜的 重载方法的调用

    我们在调用一个虚方法的时候,jvm会在适当的时候帮我们选择合适的方法版本,有的时候在编译期.有时是在运行时,这个方法版本的选择过程我们可以称之为[方法分派]. 举例: public class Hum ...

  7. 程序员财富自由的方法

    https://mp.weixin.qq.com/s/7ova51wcWfVK9MhKW-S0Rw 个人赚取收入的本质是:出售时间.从这个角度出发,下面的公式可以描述个人收入: 个人收入 = 每天可售 ...

  8. 成为更好程序员的7个方法

    程序员总是有很多的决定,不是吗?如果你的新年待办事项还是空白的话,那么可以考虑使用下面这些程序员的想法.即使是最聪明的人,也还有成长空间.以下内容摘录自 Kevlin Henney 的<程序员应 ...

  9. 2014,成为更好程序员的7个方法

    本文由 伯乐在线 - haofly 翻译.未经许可,禁止转载! 英文出处:Amy Jollymore.欢迎加入翻译小组. 程序员总是有很多的决定,不是吗?如果你的新年待办事项还是空白的话,那么可以考虑 ...

  10. 程序员致富的若干方法探讨

    前一阵收到一封网友的来信,信中提到了他在提高个人收入和未来发展中的一些困惑,这也是我们许多学员和网友经常找我咨询的一件事情,颇具普遍性,故写此博与大家探讨和分享一下. 原信内容如下: -------- ...

最新文章

  1. 苹果手机数据转移到新手机_买了新手机,数据迁移用它轻松搞定
  2. mysql5.6.4以下不支持多个字段类型为timestamp
  3. 思科模拟器,计算机网络实验三之:静态路由配置
  4. 主板模式的两项通用性接口
  5. 学习nginx 下面只是简单的配置文件
  6. linux挂载逻辑卷,CentOS 创建和挂载新的逻辑卷
  7. linux中top命令_Linux中的top命令指南
  8. 基于attention的seq2seq机器翻译实践详解
  9. 数据可视化插件 echart
  10. R语言基础期末大作业
  11. 540s inter 固件_Intel SSD Firmware Update Tool(英特尔ssd固件更新工具)下载 v2.1.6官方版...
  12. AI中去掉剪切蒙版中的多余部分
  13. 关于计算机体系结构-北桥和南桥
  14. python 切片器_Excel中如何使用切片器,这个太高大上了
  15. android跑马灯效果不起作用,Android实现跑马灯效果的方法
  16. (转载)JDO快速入门(原理详解)
  17. xbox one x驱动_Xbox One,Xbox One S和Xbox One X有什么区别?
  18. Execution failed for task ':app:processDebugGoogleServices'. No matching client found for package
  19. 黑客入侵自我保护手册
  20. emmc和MMC的区别

热门文章

  1. Jrebel激活破解
  2. 【电商】电商后台设计—电商支付
  3. idea手动执行maven命令的三种方式
  4. App项目实战之路(一):概述篇
  5. 逛Github网站显示中文教程
  6. CATIA怎么约束快捷键_CATIA快捷键设置详解
  7. 计算机考研408真题
  8. 【牛客网刷题】(第二弹)中等难度题型来了.这些题你都会做吗?
  9. 在线报刊html代码,数字报纸HTML版本
  10. beam search(束搜索)与 vliterbi(维特比算法);语音识别算法vad、asr、tts