天天看點

通過12個示例學會 linux wget 指令

Linux 下的 wget 指令用于通過 HTTP、HTTPS 和 FTP 協定從 web 上下載下傳檔案。換句話說,我們可以說 wget 是 Linux 系統的非互動式指令行下載下傳工具。它還支援通過 HTTP 代理下載下傳檔案。

這裡的非互動式意味着它可以在背景工作,而使用者沒有登入。當我們進行 Linux 發行版的最小安裝時,并沒有安裝 wget 指令,運作如下指令安裝:

$ sudo yum install -y wget     // CentOS 7 / RHEL 7
$ sudo dnf install -y wget     // CentOS 8/ RHEL 8/ Rocky Linux 8
$ sudo apt install -y wget     // Ubuntu / Debian
$ sudo pacman -S wget          // Arch Linux
$ sudo zypper install wget     // OpenSUSE
           

在本教程中,我們将介紹 12 個有用的 wget 指令示例,這些示例将幫助您像專業人員一樣使用 wget 指令。

1) 下載下傳單個檔案

要下載下傳檔案,隻需鍵入 wget 指令後跟檔案的絕對路徑,示例如下

$ wget https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.4-x86_64-minimal.iso
           

備注: 該指令将在使用者目前工作目錄下載下傳 Rocky Linux 8 ISO 檔案

2) 斷點續傳 (-c)

在某些情況下,我們下載下傳一個大檔案,但在中間網絡被斷開連接配接,使用 wget 指令中的 -c 選項,我們可以從斷開連接配接的地方繼續下載下傳。示例如下

$ wget -c https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.4-x86_64-minimal.iso
           

3) 在背景下載下傳檔案 (-b)

使用 wget 指令中的 -b 選項在背景下載下傳檔案。當檔案太大而你想使用終端執行其他任務時,這個選項非常有用。

$ wget -b https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.4-x86_64-dvd1.iso
Continuing in background, pid 4505.
Output will be written to ‘wget-log’.
           

As we can see above that downloading progress is capture in ‘wget-log’ file in user’s current directory. Use tail command to view status of download.

下載下傳進度被記錄在目前目錄的 wget-log 檔案中,使用 tail 指令檢視下載下傳狀态。

$ tail -f wget-log
2300K .......... .......... .......... .......... .......... 0% 48.1K 18h5m
2350K .......... .......... .......... .......... .......... 0% 53.7K 18h9m
2400K .......... .......... .......... .......... .......... 0% 52.1K 18h13m
2450K .......... .......... .......... .......... .......... 0% 58.3K 18h14m
2500K .......... .......... .......... .......... .......... 0% 63.6K 18h14m
2550K .......... .......... .......... .......... .......... 0% 63.4K 18h13m
2600K .......... .......... .......... .......... .......... 0% 72.8K 18h10m
2650K .......... .......... .......... .......... .......... 0% 59.8K 18h11m
2700K .......... .......... .......... .......... .......... 0% 52.8K 18h14m
2750K .......... .......... .......... .......... .......... 0% 58.4K 18h15m
2800K .......... .......... .......... .......... .......... 0% 58.2K 18h16m
2850K .......... .......... .......... .......... .......... 0% 52.2K 18h20m
           

4) 限制下載下傳速度

預設情況下,wget 指令嘗試使用全帶寬,但某些情況下,您正在使用共享網際網路,是以如果您嘗試使用 wget 下載下傳大檔案,這可能會減慢其他使用者的網絡連接配接。如果您使用 --limit-rate 選項限制下載下傳速度,則可以避免這種情況。

$ wget --limit-rate=100k https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.4-x86_64-dvd1.iso
           

5) 下載下傳多個檔案

如果您想使用 wget 指令下載下傳多個檔案,那麼首先建立一個文本檔案,并在該文本檔案中添加所有下載下傳位址,示例如下

$ cat download-list.txt
https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.4-x86_64-dvd1.iso
https://releases.ubuntu.com/20.04.2.0/ubuntu-20.04.2.0-desktop-amd64.iso
https://download.opensuse.org/distribution/leap/15.3/iso/openSUSE-Leap-15.3-DVD-x86_64-Current.iso
           

運作如下指令,wget 指令将開始按順序下載下傳 ISO 檔案

$ wget -i download-list.txt
           

6) 增加重試次數

預設情況下,wget 指令會重試20次,可以使用 --tries 選項來增加重試次數。

$ wget --tries=75 https://download.opensuse.org/distribution/leap/15.3/iso/openSUSE-Leap-15.3-DVD-x86_64-Current.iso
           

7) 重定向輸出到日志檔案

我們可以使用 -o 選項将 wget 指令輸出重定向到日志檔案,示例如下

$ wget -o download.log https://releases.ubuntu.com/20.04.2.0/ubuntu-20.04.2.0-desktop-amd64.iso
           

8) 下載下傳整站

使用 wget 指令,我們可以下載下傳完整的網站以供本地檢視,文法如下

$ wget --mirror -p --convert-links -P ./<Local-Folder> website-URL
           

選項如下

  • –mirror : 打開适合鏡像的選項
  • -p : 下載下傳正确顯示給定 HTML 頁面所需的所有檔案
  • –convert-links : 轉換文檔中的連結以供本地檢視
  • -P ./Local-Folder : 将所有檔案和目錄儲存到指定目錄下

9) 下載下傳時拒絕檔案類型

當下載下傳整站時,我們可以使用 --reject 選項強制不下載下傳圖檔。

$ wget --reject=png <Website-To-Be-Downloaded>
           

10) 設定下載下傳配額

使用 -Q 選項設定下載下傳配額,當下載下傳大小超标時,強制 wget 指令停止下載下傳。

$ wget -Q10m -i download-list.txt
           

注意:配額永遠不會影響下載下傳單個檔案,即使在指令行上指定了幾個 URL,也是如此。僅在遞歸檢索或從輸入檔案中檢索配額才能起作用,是以 wget -Q10m -i download-list.txt 在超過配額時下載下傳将被中止。

11) 從密碼保護網站下載下傳檔案

文法如下

$ wget --ftp-user=<user-name> --ftp-password=<password> Download-URL
or 
$ wget --user <user_name> --password <password> http://<url-path>/file_to_be_downloaded
           

Another way to specify username and password is in the URL itself.

也可以在 URL 中指定使用者名和密碼

為了防止密碼被看到,将它們存儲在 .wgetrc 或 .netrc 檔案中,并確定用 chmod 保護這些檔案不受其他使用者的影響。如果密碼真的很重要,不要把它們放在這些檔案中,或者在 wget 開始下載下傳後編輯檔案并删除它們。

12) 跳過證書檢查下載下傳檔案

在某些情況下,我們希望從 https 端口下載下傳檔案,并希望跳過證書檢查,是以可以使用 wget 指令中的 no-check-certificate 選項來完成

$ wget https://about.gitlab.com/ --no-check-certificate
           

使用 wget 指令從 https 門戶下載下傳 Oracle Java,跳過證書檢查

$ wget --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/12.0.1+12/69cfe15208a647278a19ef0990eea691/jdk-12.0.1_linux-x64_bin.rpm --no-check-certificate
           

通過代理下載下傳檔案

有一些情況下,我們的系統運作在代理伺服器之後,是以在這種情況下,我們首先需要設定代理,然後我們可以使用 wget 指令從網際網路下載下傳檔案。要在指令行上設定代理,請使用以下變量和 export 指令

$ export http_proxy=http://<Your-Proxy-IP>:<Proxy-Port>
$ export https_proxy=http://<Your-Proxy-IP>:<Proxy-Port>
$ export ftp_proxy=http://<Your-Proxy-IP>:<Proxy-Port>
           

如果代理工作需要使用者名和密碼,則使用以下方法

$ export http_proxy=http://<user-name>:<password>@<Your-Proxy-IP>:<Proxy-Port>
$ export https_proxy=http://<user-name>:<password>@<Your-Proxy-IP>:<Proxy-Port>
$ export ftp_proxy=http://<user-name>:<password>@<Your-Proxy-IP>:<Proxy-Port>
           

使用單個 wget 指令下載下傳并提取 tar 檔案

Let’s suppose we want to download latest version of WordPress tar

file and want to extract it under specific folder like /var/www/html,

so to accomplish this task using below wget command,

假設我們要下載下傳最新版本的 WordPress tar 檔案并希望在特定檔案夾中提取它,例如 /var/www/html,可以使用以下指令來完成此任務

# wget -q -O - http://wordpress.org/latest.tar.gz | tar -xzf - --strip-components=1 -C /var/www/html
           

我的開源項目

通過12個示例學會 linux wget 指令
  • course-tencent-cloud(酷瓜雲課堂 - gitee倉庫)
  • course-tencent-cloud(酷瓜雲課堂 - github倉庫)

繼續閱讀