Lệnh wget trong Linux: Hướng Dẫn Sử Dụng Đầy Đủ Kèm Ví Dụ Thực Tế

📌 TÓM TẮT NỘI DUNG:

wget là công cụ tải file từ dòng lệnh Linux, hỗ trợ HTTP, HTTPSFTP. Lệnh này đặc biệt hữu ích khi cần tải file lớn trên VPS không có giao diện đồ họa, tự động hóa việc download, hoặc mirror toàn bộ website để dùng offline.

Bài viết này hướng dẫn:

  • Cài đặt và cú pháp cơ bản của wget
  • Tải file, đổi tên, lưu vào thư mục tùy chọn
  • Tiếp tục download bị ngắt giữa chừng (-c)
  • Giới hạn tốc độ, tải nhiều file, chạy nền
  • Mirror website, xác thực HTTP/FTP
  • Các tùy chọn nâng cao: proxy, cookie, custom header, retry
  • Xử lý lỗi thường gặp khi dùng wget

GNU Wget là tiện ích dòng lệnh để tải tài nguyên từ web, hỗ trợ ba giao thức chính: HTTP, HTTPS và FTP. Điểm làm cho wget khác biệt so với các công cụ tương tự là khả năng tải đệ quy, tiếp tục download bị ngắt, giới hạn băng thông, và chạy hoàn toàn dưới nền — rất phù hợp khi làm việc qua SSH trên VPS Linux.

Bài viết dưới đây đi qua từng tùy chọn cụ thể, giải thích rõ các cách sử dụng lệnh wget để bạn áp dụng được ngay.

Cách sử dụng lệnh wget trong Linux

Hướng dẫn cài đặt wget

Phần lớn các bản phân phối Linux đã tích hợp sẵn wget. Để kiểm tra, chạy:

wget --version

Nếu terminal báo lỗi command not found, cài thủ công bằng package manager tương ứng với distro của bạn.

Ubuntu, Debian và các biến thể

sudo apt install wget

Fedora, RHEL và các biến thể

sudo dnf install wget

Cú pháp lệnh wget

Cấu trúc chung của lệnh wget:

wget [OPTIONS] [URL]
  • OPTIONS — Các cờ tùy chọn điều khiển cách download hoạt động
  • URL — Địa chỉ của file hoặc tài nguyên cần tải

Tải file cơ bản

Ở dạng đơn giản nhất, wget tải file từ URL về thư mục hiện tại:

wget https://releases.ubuntu.com/noble/ubuntu-24.04.4-live-server-amd64.iso

wget tải file từ URL

Trong quá trình tải, terminal hiển thị thanh tiến trình kèm tên file, kích thước, tốc độ download và thời gian ước tính còn lại. Sau khi hoàn tất, file được lưu ngay trong thư mục làm việc hiện tại.

Lưu ý: nếu trong thư mục đó đã có file trùng tên, wget tự động thêm hậu tố .N (số thứ tự) vào tên file mới thay vì ghi đè lên file cũ.

XEM THÊM:  Hướng dẫn cài đặt Node.js trên Ubuntu Chi tiết A - Z (2026)

Muốn tắt hoàn toàn mọi output ra terminal, dùng tùy chọn -q (quiet mode):

wget -q https://example.com/file.tar.gz

Đặt tên file khi lưu

Mặc định wget giữ nguyên tên file từ URL. Để lưu với tên do bạn chỉ định, dùng tùy chọn -O:

wget -O latest-hugo.zip https://github.com/gohugoio/hugo/archive/refs/heads/master.zip

Lệnh trên tải file từ GitHub về và lưu với tên latest-hugo.zip thay vì tên gốc master.zip.

Lưu file vào thư mục chỉ định

Theo mặc định, file được lưu trong thư mục hiện tại. Để chuyển sang thư mục khác, dùng -P kèm đường dẫn đích:

wget -P /mnt/iso https://releases.ubuntu.com/noble/ubuntu-24.04.4-live-server-amd64.iso

Tùy chọn -P đặc biệt tiện khi bạn cần tải nhiều file vào cùng một thư mục trong script tự động hóa.

Tiếp tục download bị ngắt

Đây là tính năng được dùng nhiều nhất khi làm việc với file lớn trên VPS. Tùy chọn -c (continue) yêu cầu wget gửi Range header để chỉ tải phần còn thiếu thay vì bắt đầu lại từ đầu:

wget -c https://releases.ubuntu.com/noble/ubuntu-24.04.4-live-server-amd64.iso

Trường hợp server từ phía remote không hỗ trợ range request, wget sẽ tự động tải lại từ đầu. Bạn có thể kết hợp với --tries để tự động retry:

wget -c --tries=10 https://releases.ubuntu.com/noble/ubuntu-24.04.4-live-server-amd64.iso

Giới hạn tốc độ download

Khi tải file lớn trên máy chủ đang phục vụ traffic thật, việc wget chiếm hết băng thông có thể ảnh hưởng đến dịch vụ đang chạy. Tùy chọn --limit-rate giúp khống chế điều này:

wget --limit-rate=2m https://example.com/large-file.tar.gz

Hậu tố đơn vị: k = kilobytes/giây, m = megabytes/giây, g = gigabytes/giây. Lệnh trên giới hạn tốc độ tối đa ở mức 2 MB/s.

Tải nhiều file cùng lúc

Thay vì chạy từng lệnh wget riêng lẻ, bạn có thể tạo một file text chứa danh sách URL — mỗi URL một dòng — rồi truyền vào wget qua tùy chọn -i:

Ví dụ file urls.txt:

https://geo.mirror.pkgbuild.com/iso/latest/archlinux-x86_64.iso
https://www.debian.org/distrib/netinst
https://download.fedoraproject.org/pub/fedora/linux/releases/41/Server/x86_64/iso/Fedora-Server-dvd-x86_64-41-1.4.iso

Chạy lệnh:

wget -i urls.txt

wget sẽ tải tuần tự từng URL trong file. Nếu muốn đọc URL từ stdin thay vì file, dùng -i -.

Download chạy nền

Tùy chọn -b đẩy tiến trình download xuống nền, giải phóng terminal để bạn làm việc khác trong khi file đang tải:

wget -b https://releases.ubuntu.com/noble/ubuntu-24.04.4-live-server-amd64.iso

Log tiến trình được ghi vào file wget-log trong thư mục hiện tại. Để theo dõi trực tiếp:

tail -f wget-log

Tải đệ quy và mirror website

Để tải toàn bộ một website về máy phục vụ xem offline, kết hợp ba tùy chọn -m, -k-p:

wget -m -k -p https://example.com

Giải thích từng flag:

  • -m — Chế độ mirror: bật tải đệ quy, giữ timestamp, depth không giới hạn
  • -k — Chuyển đổi các link trong trang thành link trỏ về file local
  • -p — Tải tất cả tài nguyên cần thiết để hiển thị đúng trang: CSS, ảnh, JavaScript

Để giới hạn độ sâu đệ quy (ví dụ chỉ tải 2 cấp từ URL gốc), dùng -l:

wget -r -l 2 https://example.com

Lọc loại file khi tải đệ quy — chỉ lấy ảnh:

wget -r --accept=jpg,png,gif https://example.com/gallery/

Loại trừ video khỏi kết quả tải:

wget -r --reject=mp4,avi https://example.com/media/

Xác thực (Authentication)

HTTP Basic Authentication

Khi server yêu cầu đăng nhập theo chuẩn HTTP basic auth, truyền thông tin qua --user--password:

wget --user=admin --password=secret https://example.com/protected/file.tar.gz

Với các API sử dụng Bearer token, gửi token qua custom header:

wget --header="Authorization: Bearer YOUR_TOKEN" https://api.example.com/data.json

FTP Authentication

Tải file từ FTP server có mật khẩu:

wget --ftp-user=FTP_USERNAME --ftp-password=FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
Lưu ý bảo mật: Mật khẩu, token hay session cookie viết trực tiếp trong lệnh có thể bị ghi vào shell history. Cân nhắc dùng file tạm có quyền truy cập hạn chế, biến môi trường được tách khỏi version control, hoặc tùy chọn --ask-password để nhập tương tác.

Dùng wget để tải ISO, deploy script hay mirror dữ liệu đều cần một VPS có băng thông ổn định và không bị throttle giữa chừng. VPS tại InterData sử dụng ổ cứng SSD NVMe cho tốc độ đọc/ghi vượt trội, Unlimited Bandwidth, uptime cao và toàn quyền root để cấu hình theo ý muốn.

XEM THÊM:  Toàn Tập Cài Đặt Và Kiểm Tra Phiên Bản .NET Trên Windows Server

Các tùy chọn hữu ích khác

Kiểm tra URL có tồn tại không

Tùy chọn --spider kiểm tra URL có thể truy cập được không mà không tải file về. Hữu ích để validate link trước khi đưa vào script:

wget --spider https://example.com/file.tar.gz

Nếu URL hợp lệ, wget in ra 200 OK. Nếu không tồn tại, in ra mã lỗi tương ứng.

Chỉ tải về khi có phiên bản mới hơn

Tùy chọn -N (timestamping) so sánh thời gian của file trên server với file local. Nếu server có phiên bản mới hơn thì mới tải, ngược lại bỏ qua:

wget -N https://example.com/data.csv

Tính năng này rất có ích khi cần đồng bộ file theo lịch cron mà không muốn tải lại những gì chưa thay đổi.

Gửi custom HTTP header

Dùng --header để đính kèm header tùy chỉnh vào request. Có thể dùng nhiều lần để thêm nhiều header:

wget --header="Accept: application/json" https://api.example.com/endpoint

Cấu hình retry và timeout

Mặc định wget thử lại tối đa 20 lần khi gặp lỗi. Để điều chỉnh:

wget --tries=5 --timeout=30 https://example.com/file.tar.gz
  • --tries=N — Giới hạn số lần thử lại ở mức N lần
  • --timeout=N — Đặt timeout cho DNS, kết nối và đọc dữ liệu = N giây

Nếu muốn retry ngay cả khi server từ chối kết nối:

wget --tries=5 --retry-connrefused https://example.com/file.tar.gz

Thay đổi User Agent

Một số server chặn request từ user agent mặc định của wget. Để giả lập trình duyệt Firefox, dùng -U:

wget -U "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" https://example.com/

Bỏ qua xác thực SSL certificate

Khi gặp server dùng self-signed certificate hoặc certificate đã hết hạn, thêm --no-check-certificate để bỏ qua bước kiểm tra:

wget --no-check-certificate https://self-signed.example.com/file.tar.gz
Cảnh báo: Bỏ qua xác thực SSL vô hiệu hóa một cơ chế bảo mật quan trọng. Chỉ dùng tùy chọn này khi bạn tin tưởng hoàn toàn vào server đích và hiểu rõ rủi ro man-in-the-middle.

Sử dụng Cookie

Lưu cookie từ server vào file:

wget --save-cookies cookies.txt https://example.com/login

Nhiều hệ thống login dùng session cookie (chỉ tồn tại trong phiên làm việc, không có thời hạn cố định). Để lưu cả loại này, thêm --keep-session-cookies:

wget --save-cookies cookies.txt --keep-session-cookies https://example.com/login

Gửi cookie đã lưu vào request tiếp theo:

wget --load-cookies cookies.txt https://example.com/protected/file.tar.gz

Kết hợp cả ba tùy chọn này cho phép duy trì session giữa nhiều lần gọi wget liên tiếp — hữu ích khi tự động hóa việc tải file từ trang yêu cầu đăng nhập.

Sử dụng Proxy

Truyền địa chỉ proxy trực tiếp qua tùy chọn -e:

wget -e use_proxy=yes -e https_proxy=http://proxy.example.com:8080 https://example.com/file.tar.gz

Hoặc export biến môi trường trước khi chạy lệnh:

export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
wget https://example.com/file.tar.gz

Nếu proxy yêu cầu đăng nhập:

wget --proxy-user=USER --proxy-password=PASS https://example.com/file.tar.gz

Pipe output sang lệnh khác

Dùng -O - để đẩy nội dung download trực tiếp vào stdout mà không lưu file xuống đĩa, sau đó pipe sang lệnh tiếp theo:

Chỉ pipe archive từ nguồn bạn tin tưởng. Với phần mềm, hãy xác minh checksum hoặc chữ ký số trước khi giải nén vào thư mục hệ thống.
wget -q -O - "https://wordpress.org/latest.tar.gz" | tar -xzf - -C /var/www

Lệnh trên tải WordPress mới nhất và giải nén thẳng vào /var/www mà không cần bước lưu file trung gian.

XEM THÊM:  Hướng Dẫn Cài Đặt và Sử Dụng Docker trên Ubuntu (Chi Tiết Từng Bước) 2026

Dùng tên file do server gợi ý

Một số server gửi header Content-Disposition chứa tên file được đề xuất. Để wget dùng tên này thay vì lấy từ URL:

wget --content-disposition https://example.com/download?file=report

Xử lý lỗi thường gặp

Unable to resolve host address

DNS không phân giải được tên miền. Kiểm tra lại tên host có đúng không, rồi thử ping hostname để xác nhận DNS hoạt động bình thường.

HTTP request sent, awaiting response… 403 Forbidden

Server từ chối request. Thử đổi user agent bằng -U, hoặc kiểm tra xem endpoint đó có yêu cầu xác thực không.

ERROR: cannot verify certificate

SSL certificate không hợp lệ hoặc đã hết hạn. Nếu tin tưởng host, dùng --no-check-certificate. Nếu không, cập nhật CA certificates: sudo apt install ca-certificates hoặc sudo dnf install ca-certificates.

Tốc độ tải cực kỳ chậm

Kiểm tra kết nối mạng và xem server có đang bị throttle không. Nếu có mirror khác, chuyển sang mirror đó. Kết hợp -c để tiếp tục từ điểm đã tải nếu download bị treo.

wget: command not found

Chưa cài wget. Cài bằng sudo apt install wget hoặc sudo dnf install wget tùy distro.

Bảng tham chiếu lệnh Wget nhanh

Lệnh Mô tả
wget URL Tải file về thư mục hiện tại
wget -O ten-file.txt URL Lưu với tên file chỉ định
wget -P /duong/dan URL Lưu vào thư mục chỉ định
wget -c URL Tiếp tục download bị ngắt
wget --limit-rate=2m URL Giới hạn tốc độ tải về
wget -i urls.txt Tải danh sách URL từ file
wget -b URL Tải chạy nền, log ra wget-log
wget -m -k -p URL Mirror website để xem offline
wget --spider URL Kiểm tra URL có tồn tại không
wget -N URL Tải chỉ khi server có phiên bản mới hơn
wget --tries=5 --timeout=30 URL Đặt số lần retry và timeout
wget --header="Auth: token" URL Gửi custom HTTP header
wget -q -O - URL | cmd Chuyển tiếp nội dung download sang lệnh khác

Cần VPS Linux hiệu năng cao để chạy script tự động hoặc tải file khổng lồ mà không lo giới hạn băng thông?

Câu hỏi thường gặp về lệnh Wget

wget và curl khác nhau như thế nào?

Cả hai đều dùng để tải file từ web, nhưng hướng về các use case khác nhau. wget được tối ưu cho tải đệ quy, mirror website và tiếp tục download bị ngắt — lưu file trực tiếp là hành vi mặc định. curl hỗ trợ nhiều giao thức hơn, phù hợp với tương tác API và gửi data lên server; mặc định xuất ra stdout thay vì lưu file.

Làm thế nào để tải toàn bộ một thư mục từ web server?

Dùng wget -r --no-parent URL/thu-muc/ để tải đệ quy mà không leo ngược lên thư mục cha. Thêm --accept hoặc --reject để lọc loại file cần hoặc không cần.

wget có thể tiếp tục file tải dở không?

Có. Dùng -c, lúc đó wget gửi Range header lên server để chỉ yêu cầu phần byte còn thiếu. Nếu server không hỗ trợ range request, download bắt đầu lại từ đầu.

Cách tự động thử lại khi download thất bại?

Mặc định wget retry tối đa 20 lần. Dùng --tries=N để thay đổi giới hạn, --retry-connrefused để retry kể cả khi server từ chối kết nối, và --waitretry=N để nghỉ N giây giữa các lần thử.

Tải file từ trang yêu cầu đăng nhập bằng wget như thế nào?

Với HTTP basic auth dùng --user--password. Với API token dùng --header="Authorization: Bearer TOKEN". Với FTP dùng --ftp-user--ftp-password. Nếu trang dùng session cookie, kết hợp --save-cookies, --keep-session-cookies--load-cookies.

Kết luận

wget giải quyết được phần lớn tình huống tải file trên Linux chỉ với một công cụ duy nhất: từ download đơn giản, tải hàng loạt theo danh sách, tiếp tục file bị ngắt kết nối, đến mirror cả một website. Hai tùy chọn đáng ghi nhớ nhất trong thực tế sử dụng hàng ngày: -c để không mất công tải lại từ đầu khi mạng đứt, và --limit-rate để tránh làm nghẽn băng thông của máy chủ đang phục vụ production.