下載較大型的檔案時,可能會因網路不穩或是臨時有事而中斷連線的狀況,之後如果要重新下載,可能要重頭開始才行,這重來的動作將十分消耗時間與網路流量,因此我們必須要使用擁有下載斷點續傳能力的軟體才行。在Linux環境上有Multiget,它是一款擁有視窗介面且開放原始碼的續傳軟體,但是因為很久沒有人維護了,程式不是那麼的穩定,也不建議使用。事實上,許多Linux發行版已內建了檔案下載與續傳的工具,而且功能十分強大,如果知道怎麼使用的話,根本無需再去尋找其它的工具軟體。這個強大的工具就是「Wget」,它除可以進行一般HTTP、HTTPS、FTP協定的連線外,還可以自訂連線時使用的代理伺服器(Proxy),甚至可以將整個網站給抓下來,也就是俗稱的「砍站」。



下載與安裝Wget

如果您的系統沒有安裝Wget,可以到Wget的官方網頁找到它:

Wget 的使用方式

查看文件

在終端機下輸入以下指令,可以查看Wget的用法:

wget --help

wget

下載檔案

使用Wget下載檔案十分簡單,只要先將終端機的工作目錄移動到檔案下載後想要存放的位置,接著在使用以下指令來連線下載即可:

wget 網址

如下圖,使用Wget來下載Ubuntu的映像檔。會以=來顯示處理進度。

wget

斷點續傳

在預設的情況下,Wget是沒有續傳能力的,也就是如果下載中止的話,下次得重頭開始下載。

wget

因此在使用Wget來下載檔案的時候,通常會多加上-c參數,開啟Wget的續傳功能,指令如下:

wget -c 網址

如下圖,續傳之前斷開的Ubuntu映像檔,已經下載的進度會以+表示。

wget

設定代理伺服器(Proxy)

在大部分的情況下,使用Proxy可以減少網路的負載量,甚至還可以提高連線速度。若要讓Wget使用Proxy來進行連線,可以使用類似以下的指令用純文字編輯器編輯/etc/wgetrc

sudo gedit /etc/wgetrc

預設的情況下https_proxyhttp_proxyftp_proxyuse_proxy都被註解掉了。因此可以將它們取消註解,設定自己想使用的Proxy,填寫Proxy的格式可參考下圖,並將use_proxy設為on

wget

/etc/wgetrc存檔後,之後使用Wget除非特地加上不使用Proxy的參數(如--no-proxy),不然Wget預設都會以/etc/wgetrc檔案裡設定的Proxy來進行連線。

擷取整個網站(砍站)

如果要把整個的網站的內容幹下來保存下來,可以使用以下指令:

wget --recursive --page-requisites --html-extension --convert-links --domains 網域 網址

以下是參數說明:

  • --recursive:遞迴下載,如果網址的部份為網站首頁的話,將會一層一層地將首頁所能連結到的所有頁面下載回來。
  • --page-requisites:下載顯示網頁時所需的素材,像是圖片或是CSS。
  • --html-extension:將檔名改為html,這樣才不會抓php網站而產生php檔案或是抓asp網站而產生asp檔案。
  • --convert-links:將原本網站內所有站內的連結全都改為Local連結,這樣下載網站後才可以離線使用。
  • --domains:只接受哪些網域下的網頁,可以多個網域,以逗號分隔。通常只會填入該網站的網域。