📌 TÓM TẮT NỘI DUNG:
wget là công cụ tải file từ dòng lệnh Linux, hỗ trợ HTTP, HTTPS và FTP. 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.

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 độngURL— Đị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

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ũ.
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 và -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 và --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
--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.
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
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:
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.
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 và --password. Với API token dùng --header="Authorization: Bearer TOKEN". Với FTP dùng --ftp-user và --ftp-password. Nếu trang dùng session cookie, kết hợp --save-cookies, --keep-session-cookies và --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.
