LINUX MAC Axel —— 一款比 wget 更强大的多线程下载工具

前言


 

  最近使用 wget 下载百度云资源,速度比较缓慢,在朋友推荐多线程下载后发现 wget 其实仅仅是一个单线程下载工具,在面对文件时会显得十分鸡肋,并且有许多诟病,比如无断点重连等等功能。

 

 

 

Axel 介绍


 

  经过一些搜索后发现,有一个非常好用的下载工具名为 Axel ,和 wget 一样是命令行下的下载工具,但是支持多线程下载,断点重连等等强大的功能。

  以下是 man 中它的英文介绍以及翻译:

axel - light command line download accelerator。

    Axel is a program that downloads a file from a FTP or HTTP server through multiple connection. Each     connection downloads its own part of the file. Unlike most other programs, Axel downloads all the data directly to the destination file. It saves some time at the end because the program does not have to concatenate all the downloaded parts.

    Axel supports HTTP, HTTPS, FTP and FTPS protocols.
    axel - 强大的命令行下载器  
    Axel 是一款从 FTP 或者 HTTP 服务器上下载文件的多线程下载器。每一个线程下载文件的某一个部分。不像其他的下载器,Axel 可以直接下载对应资源的某些数据,这样分块下载资源而不是整体下载的方式最终能节约很多的时间

 

 

 

常用参数介绍


 

  -h

  即是 --help,这是最有用的命令,哈哈

 

  -n x

  即是 --num-connections=x ,下载线程的个数

 

  -q

  即是 --quiet,没有输出会被输出到标准输出 stdout 中

 

  -a

  即是 --alternate,将会显示一个相间的程序下载状态栏,可以看到不同线程的下载情况

 

  -U x

  即是 --user-agent=x,设置请求头的用户代理。有些服务器会对此参数进行区分。默认的用户代理是Alex

  

  -T X

  即是 --timeout=x,设置 I/O 与连接时间的上限

 

  -V

  即是 --version,获得axel的版本信息

  

    

 

经验总结


 

  这里列出我最喜欢使用的一个命令,具有很强的实用性

Axel -n 线程个数 -a -v -U 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15' -o '目录/目标文件名' 目标URL

  

 

两个细节

    1. 用户代理问题

      有些网站需要模拟请求头的 User-agent 从而能够解析 URL。

      那么请求头又从哪里获得呢?这可难不住我们,模拟一个 User-Agent 请求头就可以解决了。User-Agent 可以直接复制浏览器 -> 开发者模式(F12或者 cmd + option + i) -> 网络-> 请求头 -> User-Agent 比如我的就是 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15。

 

    2.目录问题

      指定的目录需要是已存在的目录,命令行的程序通常都并不会新建目录。

 

 

将下载器挂起并在后台运行

  如果你想要在后台下载,并且想要关闭了终端后也能够进行下载,这时候该怎么办呢?

  当然是使用 nohup 啦!

  常用命令:

nohup command >OutFile.out 2>&1 & 

  命令的解释:将 指令 command 挂起到后台并为 nohup 所控制,其程序的输出将重定向到当前目录 OutFile.out 文件中,并且将标准错误 stderr 绑定到 stdout 上,这样错误信息也会被记录下来

  

  当需要将nohup后台运行的程序调到前台时,先jobs命令查看后台job编号,用 fg %n命令可以调回到前台运行(n是job的编号)。

PS:单独的&时可以让命令后台运行的,知识如果ssh会话断掉,&的命令也会自动退出。

 

e.g 多线程下载一篇论文并保证在后台进行,即使退出该终端也没有关系

  代码如下:

nohup Axel -n 10 -U 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15' -o 'paper.pdf' http://www.aclweb.org/anthology/W03-0429 >OutFile.out 2>&1 &

 

  

 

posted @ 2018-08-01 22:58  bw98  阅读(3284)  评论(0编辑  收藏  举报