wget là một tiện ích dòng lệnh miễn phí và phổ biến trên Linux, được thiết kế chuyên biệt để tải file từ các máy chủ web. Điểm mạnh lớn nhất của wget là khả năng làm việc không tương tác, có thể hoạt động ngầm trong nền ngay cả khi người dùng đã đăng xuất khỏi hệ thống. Trong bài viết này, mình sẽ hướng dẫn bạn chi tiết cách sử dụng lệnh wget với các tùy chọn quan trọng, giúp bạn tải file, tải toàn bộ trang web hoặc tiếp tục quá trình tải về bị gián đoạn một cách hiệu quả.
Những điểm chính
- Khái niệm: Hiểu rõ khái niệm wget là công cụ tải file mạnh mẽ giúp bạn tự động hóa quy trình thu thập dữ liệu từ Internet một cách ổn định.
- Các tính năng chính: Nắm bắt các ưu điểm vượt trội như tải nối tiếp, chạy ngầm và kiểm soát băng thông để tối ưu hóa tài nguyên máy chủ.
- Cách cài đặt: Biết cách thiết lập wget trên các hệ điều hành Linux phổ biến như Ubuntu hay CentOS với các thao tác đơn giản.
- Cách sử dụng hiệu quả: Nắm được các cú pháp từ tải file đơn lẻ, đổi tên file đến việc tải đệ quy toàn bộ website để xem ngoại tuyến.
- Kiểm tra kết quả: Đảm bảo dữ liệu tải về thành công, đúng kích thước và biết cách xử lý khi tên file bị trùng lặp.
- Xử lý lỗi phổ biến: Trang bị kỹ năng khắc phục lỗi 404, lỗi SSL và lỗi kết nối để đảm bảo quá trình tải về luôn thông suốt.
- Lưu ý quan trọng: Nắm vững các quy tắc an toàn bảo mật và quản lý băng thông để tránh rủi ro thực thi mã độc hoặc nghẽn mạng.
- Câu hỏi thường gặp: Giải đáp các thắc mắc phổ biến liên quan đến wget.
Lệnh wget là gì?
wget là lệnh được sử dụng để tải file từ Internet, hỗ trợ các giao thức truyền tải phổ biến nhất như HTTP, HTTPS, FTP,… Lệnh này thường được cài đặt mặc định trên hầu hết các bản phân phối Linux để phục vụ nhu cầu thu thập dữ liệu của quản trị viên.
Điểm mạnh của wget là ở tính ổn định và tự động hóa cao. Công cụ này được thiết kế để hoạt động tốt ngay cả trong điều kiện mạng yếu với khả năng tự động thử lại khi kết nối bị ngắt và hỗ trợ tải nối tiếp các file dung lượng lớn mà không cần người dùng giám sát. Đặc biệt, wget sở hữu tính năng tải đệ quy mạnh mẽ, cho phép tự động đi theo các đường liên kết để tải về toàn bộ hoặc một phần website nhằm mục đích lưu trữ và xem ngoại tuyến.

Những tính năng chính của lệnh wget
Dưới đây là các tính năng chính của wget trong môi trường server:
- Khả năng phục hồi kết nối mạnh mẽ: Nếu quá trình tải file dung lượng lớn bị ngắt giữa chừng do rớt mạng,
wgetcó thể tiếp tục tải nối tiếp từ điểm bị gián đoạn thay vì phải tải lại từ đầu như các trình duyệt thông thường. - Tải đệ quy toàn bộ website:
wgetcó thể tự động đi theo các đường link để tải về toàn bộ cấu trúc thư mục, hình ảnh và trang HTML của một website, giúp tạo ra bản sao lưu để xem ngoại tuyến. - Hoạt động nền không cần giám sát: Được thiết kế để chạy ngầm,
wgetkhông yêu cầu người dùng phải giữ cửa sổ Terminal mở liên tục. Bạn có thể bắt đầu tải một file 10GB, đăng xuất khỏi server vàwgetvẫn sẽ tiếp tục tải cho đến khi hoàn tất. - Kiểm soát băng thông: Để tránh việc tải file chiếm hết đường truyền của server gây ảnh hưởng đến các dịch vụ khác,
wgetcho phép bạn giới hạn tốc độ tải xuống thông qua tùy chọn--limit-rate. - Linh hoạt với proxy và xác thực:
wgethỗ trợ tốt việc tải file qua các Proxy server hoặc các trang web yêu cầu đăng nhập, giúp dễ dàng vượt qua các rào cản tường lửa trong môi trường mạng doanh nghiệp.

Cách cài đặt lệnh wget
Lệnh wget thường được cài đặt sẵn trên hầu hết các bản phân phối Linux. Nếu lệnh không có sẵn, hệ thống sẽ báo lỗi command not found, khi đó bạn có thể cài đặt bằng lệnh sau:
- Trên Debian/Ubuntu:
sudo apt install wget- Trên CentOS/RHEL:
sudo yum install wgetCách sử dụng lệnh wget trong Linux hiệu quả
1. Tải một file đơn lẻ
Để tải một file từ đường dẫn URL cụ thể về thư mục làm việc hiện tại, bạn sử dụng cú pháp lệnh sau:
wget <URL_den_file_can_tai_xuong>Để tải file techtest.index từ máy chủ tech1.vietnix.tech về máy của bạn và lưu vào thư mục hiện tại với đúng tên file gốc là techtest.index, bạn thực hiện lệnh dưới đây:
wget https://tech1.vietnix.tech/techtest.indexFile sẽ được tải về và lưu với tên gốc, ví dụ như techtest.index hoặc archive.zip vào thư mục mà bạn đang chạy lệnh.

2. Tiếp tục tải về file bị gián đoạn
Để khôi phục quá trình tải về một file đã bị ngắt kết nối trước đó mà không cần phải tải lại từ đầu, bạn thêm tùy chọn -c vào câu lệnh sau:
wget -c <URL_den_file_can_tai_xuong>Để tải file techtest.index về máy và có thể tiếp tục tải lại nếu bị ngắt giữa chừng, không phải tải lại từ đầu, bạn thực thi lệnh sau:
wget -c https://tech1.vietnix.tech/techtest.indexTùy chọn -c sẽ kiểm tra kích thước phần file đã tải và tiếp tục tải phần còn lại từ điểm dừng. Đây là tùy chọn quan trọng khi tải các file dung lượng lớn qua mạng không ổn định.

3. Đổi tên file khi tải về
Bạn có thể lưu file tải về với một tên khác so với tên gốc trên máy chủ bằng cách sử dụng tùy chọn -O với chữ O viết hoa:
wget -O <ten_file_luu_lai> <URL_den_file_goc>Lệnh dưới đây dùng để tải file nén techtest.zip từ server về máy và lưu lại với tên mới là backup.zip trong thư mục hiện tại:
wget -O backup.zip https://tech1.vietnix.tech/techtest.zip
4. Tải về không hiển thị chi tiết
Bạn có thể chạy lệnh wget trong nền mà không hiển thị các thông báo tiến trình tải về ra màn hình Terminal. Để kích hoạt chế độ im lặng, bạn dùng tùy chọn -q với cú pháp như sau:
wget -q <URL_den_file_can_tai_xuong>Để tải file techtest.index về máy trong chế độ im lặng, không in ra thanh tiến trình hay thông báo ra màn hình, bạn thực hiện lệnh sau:
wget -q https://tech1.vietnix.tech/techtest.index
5. Tải về đệ quy toàn bộ trang web
Bạn có thể tải toàn bộ nội dung của một website bao gồm các liên kết con để xem ngoại tuyến bằng câu lệnh phức hợp sau:
wget -r -l 2 -p -k <URL_trang_web_can_crawl>Để tải về toàn bộ nội dung website https://tech.vietnix.xyz trong phạm vi tối đa 2 cấp liên kết và chuyển đổi liên kết để có thể xem offline trên máy, bạn thực hiện lệnh sau:
wget -r -l 2 -p -k https://tech.vietnix.xyzTrong đó:
-r(recursive): Kích hoạt chế độ tải đệ quy, tự động đi theo các liên kết.-l 2(level): Chỉ giới hạn theo dõi liên kết tối đa 2 cấp độ sâu từ URL gốc.-p(page-requisites): Tải tất cả các tệp cần thiết để hiển thị trang web đúng giao diện như hình ảnh, CSS, JS.-k(convert-links): Chuyển đổi các liên kết trong mã HTML thành liên kết cục bộ để có thể xem được khi không có mạng.

Cách kiểm tra kết quả thành công sau khi chạy lệnh wget
Sau khi lệnh wget chạy hoàn tất, bạn sẽ thấy thông báo saved [tên tập tin]. Bạn có thể kiểm tra thư mục hiện tại bằng lệnh ls -l để xác minh file đã tồn tại với kích thước chính xác.
Lưu ý
Nếu file đã tồn tại, wget sẽ tự động thêm hậu tố .1, .2,… vào tên file mới tải về thay vì ghi đè lên file cũ.
Cách xử lý các lỗi phổ biến khi sử dụng lệnh wget
1. Lỗi: ERROR 404: Not Found
Thông báo ERROR 404: Not Found cho biết máy chủ đích đã nhận được yêu cầu nhưng không thể tìm thấy file mà bạn cần. Nguyên nhân chủ yếu xuất phát từ việc đường dẫn URL bị nhập sai hoặc file đó đã bị xóa/di chuyển sang thư mục khác.
Ngoài ra, bạn cần lưu ý rằng các máy chủ Linux phân biệt chữ hoa và chữ thường nên File.iso và file.iso sẽ là hai file khác nhau. Để khắc phục, bạn hãy kiểm tra kỹ từng ký tự trong URL hoặc thử dán đường dẫn đó vào trình duyệt web để xác nhận file còn tồn tại hay không trước khi chạy lệnh.
2. Lỗi: Connection refused hoặc Unable to establish SSL connection
Khi gặp thông báo “Connection refused”, điều này có nghĩa là gói tin của bạn đã bị chặn. Nguyên nhân có thể do máy chủ đích đang ngoại tuyến hoặc tường lửa đang chặn các cổng web tiêu chuẩn. Lúc này, bạn nên thử dùng lệnh ping đến địa chỉ máy chủ để kiểm tra kết nối mạng cơ bản.
Đối với lỗi liên quan đến SSL, nguyên nhân thường do chứng chỉ bảo mật của máy chủ đã hết hạn hoặc không được cấp bởi tổ chức uy tín. Trong môi trường kiểm thử hoặc mạng nội bộ tin cậy, bạn có thể buộc wget bỏ qua bước kiểm tra an toàn này bằng cách thêm tham số --no-check-certificate vào câu lệnh để tiếp tục tải về.

Theo kinh nghiệm của mình khi quản trị nhiều server tại Vietnix, lỗi “Connection refused” phần lớn không phải do wget mà do cấu hình tường lửa phía server đích hoặc dịch vụ web chưa được khởi động. Mình thường kiểm tra lần lượt bằng
ping, sau đó làtelnet <host> 443để xác định chính xác kết nối bị nghẽn ở tầng mạng hay tầng ứng dụng, từ đó tiết kiệm đáng kể thời gian xử lý sự cố thay vì thử nhiều cách ngẫu nhiên.
3. Lỗi: File không tải về được khi chạy trong nền
Một trong những tính năng mạnh nhất của wget là khả năng chạy nền, nhưng nhiều người dùng gặp khó khăn khi không biết tiến trình đang chạy đến đâu hoặc bị ngắt đột ngột khi đóng cửa sổ dòng lệnh. Để khắc phục, bạn cần kết hợp tham số -b để đưa tiến trình vào chạy ngầm, đồng thời sử dụng tham số -o logfile.txt để xuất toàn bộ thông báo ra một file nhật ký thay vì màn hình. Khi cần kiểm tra tiến độ tải, bạn chỉ cần dùng lệnh tail -f logfile.txt để xem trạng thái thực tế mà không làm gián đoạn quá trình tải.
Những lưu ý quan trọng khi sử dụng lệnh wget
Dưới đây là 5 lưu ý quan trọng để sử dụng wget một cách an toàn và tối ưu nhất, giúp bạn tránh các rủi ro về bảo mật và tài nguyên hệ thống:
- Không thực thi mã mù: Việc pipe trực tiếp nội dung tải về vào shell tiềm ẩn rủi ro bảo mật nghiêm trọng. Do đó bạn cần tuân thủ quy trình chuẩn là: Tải về -> Kiểm tra mã nguồn -> Cấp quyền thực thi.
- Quản lý băng thông mạng: Trong môi trường hạ tầng chia sẻ hoặc server production, bạn nên sử dụng tham số
--limit-rateđể giới hạn tốc độ tải, ngăn chặn việc chiếm dụng toàn bộ băng thông gây nghẽn mạng. - Tận dụng cơ chế Resume (
-c): Đối với các file kích thước lớn, bạn hãy kích hoạt cờ-cđể đảm bảo tính toàn vẹn dữ liệu và tiết kiệm thời gian xử lý khi kết nối mạng không ổn định. - Chuẩn hóa tên file đầu ra (
-O): Các URL thường chứa tham số truy vấn dài và phức tạp, do đó bạn hãy sử dụng tùy chọn-Ođể định danh lại file khi tải về, giúp việc quản lý file và tích hợp vào các script tự động hóa chính xác hơn.
Qua quá trình làm việc thực tế, mình nhận thấy sai lầm phổ biến nhất của người mới là bỏ qua bước kiểm tra mã nguồn trước khi thực thi, đặc biệt khi tải script cài đặt từ các nguồn bên thứ ba. Mình khuyên bạn nên tạo thói quen luôn tải file về trước bằng wget, dùng cat hoặc less để đọc nội dung, rồi mới chạy. Thao tác này chỉ mất thêm vài giây nhưng giúp bạn tránh được những rủi ro bảo mật nghiêm trọng mà mình đã từng chứng kiến trên các hệ thống production.

Câu hỏi thường gặp
Sự khác biệt chính giữa wget và curl là gì?
– wget: Được thiết kế tối ưu cho việc tải tập tin, thường được sử dụng trong việc tải đệ quy, xử lý việc rớt mạng và dễ sử dụng để tải file đơn thuần.
– curl: Được thiết kế như một công cụ truyền dữ liệu đa năng, hỗ trợ nhiều giao thức hơn và mạnh mẽ trong việc gửi các yêu cầu API (POST, PUT,…), debug mạng.
Bạn hãy dùng wget nếu chỉ cần tải file hoặc backup website. Trong trường hợp bạn cần test API hoặc tương tác phức tạp với server, hãy dùng curl.
Làm thế nào để tải hàng loạt file từ một danh sách có sẵn?
Bạn không cần chạy lệnh wget cho từng URL, hãy lưu danh sách các đường link vào một file văn bản, mỗi link một dòng, sau đó dùng tùy chọn -i với cú pháp lệnh sau:
wget -i list.txt
Tôi có thể giới hạn tốc độ tải để không chiếm hết băng thông mạng không?
Có. wget cho phép bạn giới hạn tốc độ tải bằng tùy chọn –limit-rate. Điều này rất hữu ích khi bạn tải file lớn trên server production.
Ví dụ giới hạn tốc độ ở mức 500KB/s, bạn thực hiện lệnh sau:
wget –limit-rate=500k
Lệnh wget là công cụ quan trọng trên Linux giúp tự động hóa việc tải file và dữ liệu từ Internet. Với khả năng tiếp tục tải về bị gián đoạn, tải đệ quy toàn bộ trang web và hoạt động không tương tác mạnh mẽ, bạn có thể làm chủ được cách tải về tài nguyên từ web một cách đáng tin cậy, ngay cả trong những điều kiện mạng không ổn định hoặc khi cần xử lý các tác vụ tải về phức tạp.




