前言
最近使用 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 &