Trong bài viết này, chúng ta sẽ xem xét tiện ích lệnh wget lấy các tệp từ World Wide Web (WWW) bằng cách sử dụng các giao thức được sử dụng rộng rãi như HTTP, HTTPS, FTP, và FTPS.
Wget là một tiện ích dòng lệnh miễn phí và trình tải xuống tệp mạng, đi kèm với nhiều tính năng giúp việc tải xuống tệp dễ dàng, bao gồm:
- Tải xuống tệp lớn hoặc sao chép toàn bộ trang web hoặc trang FTP.
- Tải xuống nhiều tệp cùng một lúc.
- Đặt băng thông và giới hạn tốc độ cho tải xuống.
- Tải xuống tệp thông qua proxy.
- Có thể tiếp tục tải xuống.
- Sao chép lại đệ quy các thư mục.
- Chạy trên hầu hết các hệ điều hành giống UNIX cũng như Windows.
- Hoạt động không ai trông nom.
- Hỗ trợ kết nối HTTP liên tục.
- Hỗ trợ SSL/TLS cho việc tải xuống được mã hóa sử dụng các thư viện OpenSSL hoặc GnuTLS.
- Hỗ trợ tải xuống IPv4 và IPv6.
Cú pháp lệnh Wget
Cú pháp cơ bản của Wget là:
$ wget [option] [URL]
Trước tiên, kiểm tra xem tiện ích wget đã được cài đặt hay chưa trong hệ thống Linux của bạn, bằng cách sử dụng lệnh sau.
$ rpm -q wget [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ dpkg -l | grep wget [On Debian, Ubuntu and Mint]
Cài đặt Wget trên Linux
Nếu Wget chưa được cài đặt, bạn có thể cài đặt nó bằng trình quản lý gói mặc định của hệ thống Linux của bạn như sau.
$ sudo apt install wget -y [On Debian, Ubuntu and Mint]
$ sudo yum install wget -y [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a net-misc/wget [On Gentoo Linux]
$ sudo pacman -Sy wget [On Arch Linux]
$ sudo zypper install wget [On OpenSUSE]
Tùy chọn -y
được sử dụng ở đây để ngăn hiển thị xác nhận trước khi cài đặt bất kỳ gói nào.
11 ví dụ về wget command
1. Tải xuống một tệp với Wget
Lệnh này sẽ tải xuống một tệp duy nhất và lưu nó trong thư mục hiện tại. Nó cũng hiển thị quá trình tải xuống, kích thước, ngày, và thời gian trong quá trình tải xuống.
# wget http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
--2021-12-10 04:15:16-- http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3565643 (3.4M) [application/x-gzip]
Saving to: ‘wget2-2.0.0.tar.gz’
wget2-2.0.0.tar.gz 100%[==========>] 3.40M 2.31MB/s in 1.5s
2021-12-10 04:15:18 (2.31 MB/s) - ‘wget2-2.0.0.tar.gz’ saved [3565643/3565643]
2. Tải xuống tệp với tên khác bằng Wget
Sử dụng tùy chọn -O
(in hoa), tải xuống tệp với tên khác. Ở đây, chúng tôi đã đặt tên tệp wget.zip như được hiển thị dưới đây.
# wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
--2021-12-10 04:20:19-- http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 446966 (436K) [application/x-gzip]
Saving to: ‘wget.zip’
wget.zip 100%[===================>] 436.49K 510KB/s in 0.9s
2021-12-10 04:20:21 (510 KB/s) - ‘wget.zip’ saved [446966/446966]
3. Tải xuống nhiều tệp với giao thức HTTP và FTP bằng Wget
Ở đây, chúng ta sẽ xem cách tải xuống nhiều tệp bằng cách sử dụng giao thức HTTP và FTP cùng một lúc bằng lệnh wget.
$ wget http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz ftp://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz.sig
--2021-12-10 06:45:17-- http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3565643 (3.4M) [application/x-gzip]
Saving to: ‘wget2-2.0.0.tar.gz’
wget2-2.0.0.tar.gz 100%[==========>] 4.40M 4.31MB/s in 1.1s
2021-12-10 06:46:10 (2.31 MB/s) - ‘wget2-2.0.0.tar.gz’ saved [3565643/3565643]
4. Tải xuống nhiều tệp từ một tệp bằng Wget
Để tải xuống nhiều tệp cùng một lúc, hãy sử dụng tùy chọn -i
với vị trí của tệp chứa danh sách URL cần tải xuống. Mỗi URL cần được thêm trên một dòng riêng biệt như được hiển thị.
Ví dụ, tệp ‘download-linux.txt‘ dưới đây chứa danh sách URL cần tải xuống.
# cat download-linux.txt
https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.5-x86_64-dvd1.iso
https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.2.0-amd64-DVD-1.iso
# wget -i download-linux.txt
--2021-12-10 04:52:40-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.248, 91.189.88.247, 91.189.91.124, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.248|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3071934464 (2.9G) [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’
ubuntu-20.04.3-desktop-amd64 4%[=> ] 137.71M 11.2MB/s eta 3m 30s
...
Nếu danh sách URL của bạn có một mẫu đánh số cụ thể, bạn có thể thêm dấu ngoặc nhọn để lấy tất cả các URL phù hợp với mẫu. Ví dụ, nếu bạn muốn tải xuống một loạt các bản kernel Linux bắt đầu từ phiên bản 5.1.1 đến 5.1.15, bạn có thể thực hiện như sau.
$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.{1..15}.tar.gz
--2021-12-10 05:46:59-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz
Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1
Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not trusted.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not yet activated.
The certificate has not yet been activated
HTTP request sent, awaiting response... 200 OK
Length: 164113671 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.1.tar.gz’
linux-5.1.1.tar.gz 100%[===========>] 156.51M 2.59MB/s in 61s
2021-12-10 05:48:01 (2.57 MB/s) - ‘linux-5.1.1.tar.gz’ saved [164113671/164113671]
--2021-12-10 05:48:01-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.2.tar.gz
Reusing existing connection to mirrors.edge.kernel.org:443.
HTTP request sent, awaiting response... 200 OK
Length: 164110470 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.2.tar.gz’
linux-5.1.2.tar.gz 19%[===========] 30.57M 2.58MB/s eta 50s
5. Tiếp tục tải xuống chưa hoàn thành bằng Wget
Trong trường hợp tải xuống tệp lớn, có thể xảy ra trường hợp dừng tải xuống nhưng trong trường hợp đó, chúng ta có thể tiếp tục tải xuống cùng một tệp nơi nó đã dừng lại bằng tùy chọn -c
.
Nhưng khi bắt đầu tải xuống tệp mà không chỉ định tùy chọn -c
, wget sẽ thêm phần mở rộng .1
ở cuối tệp, được coi là một tải xuống mới tinh. Vì vậy, việc tốt là thêm chuyển đổi -c khi bạn tải xuống các tệp lớn.
# wget -c https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
--2021-12-10 05:27:59-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.247, 91.189.91.123, 91.189.91.124, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.247|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 3071934464 (2.9G), 2922987520 (2.7G) remaining [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’
ubuntu-20.04.3-desktop-amd64.iso 5%[++++++> ] 167.93M 11.1MB/s
^C
[root@tecmint ~]# wget -c https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
--2021-12-10 05:28:03-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.248, 91.189.91.124, 91.189.91.123, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.248|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 3071934464 (2.9G), 2894266368 (2.7G) remaining [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’
ubuntu-20.04.3-desktop-amd64.iso 10%[+++++++=====> ] 296.32M 17.2MB/s eta 2m 49s ^
6. Sao chép toàn bộ trang web bằng Wget
Để tải xuống, sao chép hoặc sao chép một trang web hoàn chỉnh để xem ngoại tuyến, bạn có thể sử dụng lệnh sau đây để tạo một bản sao cục bộ của trang web cùng với tất cả các tài sản (JavaScript, CSS, Hình ảnh).
$ wget --recursive --page-requisites --adjust-extension --span-hosts --convert-links --restrict-file-names=windows --domains yoursite.com --no-parent yoursite.com
Giải thích cho lệnh trên.
wget \
--recursive \ # Download the whole site.
--page-requisites \ # Get all assets/elements (CSS/JS/images).
--adjust-extension \ # Save files with .html on the end.
--span-hosts \ # Include necessary assets from offsite as well.
--convert-links \ # Update links to still work in the static version.
--restrict-file-names=windows \ # Modify filenames to work in Windows as well.
--domains yoursite.com \ # Do not follow links outside this domain.
--no-parent \ # Don't follow links outside the directory you pass in.
yoursite.com/whatever/path # The URL to download
7. Tải xuống tệp trong nền bằng Wget
Với tùy chọn -b
, bạn có thể gửi một tệp tải xuống phía sau tức thì sau khi tải xuống bắt đầu và các nhật ký được ghi trong tệp wget.log.
$ wget -b wget.log https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Continuing in background, pid 8999.
Output will be written to ‘wget.log’.
8. Đặt giới hạn tốc độ tải xuống tệp bằng Wget
Với tùy chọn --limit-rate=100k
, giới hạn tốc độ tải xuống được hạn chế thành 100k và các nhật ký sẽ được tạo trong wget.log như được hiển thị dưới đây.
$ wget -c --limit-rate=100k -b wget.log https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Continuing in background, pid 9108.
Output will be written to ‘wget-log’.
Xem tệp wget.log và kiểm tra tốc độ tải xuống của wget.
$ tail -f wget-log
5600K .......... .......... .......... .......... .......... 0% 104K 8h19m
5650K .......... .......... .......... .......... .......... 0% 103K 8h19m
5700K .......... .......... .......... .......... .......... 0% 105K 8h19m
5750K .......... .......... .......... .......... .......... 0% 104K 8h18m
5800K .......... .......... .......... .......... .......... 0% 104K 8h18m
5850K .......... .......... .......... .......... .......... 0% 105K 8h18m
5900K .......... .......... .......... .......... .......... 0% 103K 8h18m
5950K .......... .......... .......... .......... .......... 0% 105K 8h18m
6000K .......... .......... .......... .......... .......... 0% 69.0K 8h20m
6050K .......... .......... .......... .......... .......... 0% 106K 8h19m
6100K .......... .......... .......... .......... .......... 0% 98.5K 8h20m
6150K .......... .......... .......... .......... .......... 0% 110K 8h19m
6200K .......... .......... .......... .......... .......... 0% 104K 8h19m
6250K .......... .......... .......... .......... .......... 0% 104K 8h19m
...
9. Tải xuống tệp được bảo vệ bằng mật khẩu qua FTP và HTTP bằng Wget
Để tải xuống một tệp từ máy chủ FTP yêu cầu mật khẩu, bạn có thể sử dụng các tùy chọn --ftp-user=username
và --ftp-password=password
như được hiển thị.
$ wget --ftp-user=narad --ftp-password=password ftp://ftp.example.com/filename.tar.gz
Để tải xuống một tệp từ máy chủ HTTP yêu cầu mật khẩu, bạn có thể sử dụng các tùy chọn --http-user=username
và --http-password=password
như được hiển thị.
$ wget --http-user=narad --http-password=password http://http.example.com/filename.tar.gz
10. Bỏ qua kiểm tra chứng chỉ SSL của Wget
Để bỏ qua kiểm tra chứng chỉ SSL khi tải xuống tệp qua HTTPS, bạn có thể sử dụng tùy chọn --no-check-certificate
:
$ wget --no-check-certificate https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz
--2021-12-10 06:21:21-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz
Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1
Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not trusted.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not yet activated.
The certificate has not yet been activated
HTTP request sent, awaiting response... 200 OK
Length: 164113671 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.1.tar.gz’
...
11. Phiên bản và trợ giúp của Wget
Với các tùy chọn --version
và --help
, bạn có thể xem phiên bản và trợ giúp khi cần thiết.
$ wget --version
$ wget --help
Trong bài viết này, chúng tôi đã đề cập đến các wget command Linux với các tùy chọn cho các nhiệm vụ quản trị hàng ngày. Hãy đọc man wget nếu bạn muốn biết thêm thông tin về nó?