Nếu bạn đã theo dõi hướng dẫn Magic Mirror của chúng tôi, bạn sẽ thấy lệnh wget được dùng để tải một số file.
Hướng dẫn này giải thích cách sử dụng wget, một công cụ dòng lệnh để tải (get) file từ web, سواء qua HTTP, HTTPS, FTP, hay FTPS.
Dùng nó để tải file từ internet trên shell Linux, gọi từ script Bash – nó đơn giản, đa năng và không cần can thiệp của người dùng sau khi bắt đầu, nên có thể chạy nền.
Cú pháp
wget [TUY_CHON]... [URL]...
Lưu ý:
- TUY_CHON là danh sách các tùy chọn từ bảng dưới đây, cách nhau bằng dấu cách
- URL là danh sách các URL cần tải, cách nhau bằng dấu cách
Dưới đây là các tùy chọn wget phổ biến, lấy từ tài liệu chính thức:
| Tùy chọn phổ biến | Mô tả |
|---|---|
| -o file_log | Ghi tất cả thông báo vào file_log. Thông báo thường báo ra standard error. |
| -a file_log | Ghi thêm vào file_log. Tương tự -o nhưng ghi thêm thay vì ghi đè. Nếu file không tồn tại, sẽ tạo mới. |
| -q | Tắt output của Wget (chạy im lặng). |
| -i file | Đọc URL từ file cục bộ hoặc bên ngoài. Khi dùng tùy chọn này, không cần URL trên dòng lệnh. |
| -t so_lan | Đặt số lần thử lại là so_lan. |
| -c | Tiếp tục tải file đã tải một phần (resume). |
| -T giay | Đặt timeout mạng là giay giây. |
| -w giay | Chờ giay giây giữa các lần tải. |
| --user=ten_dang_nhap | Đặt tên người dùng xác thực HTTP/FTP. |
| --password=mat_khau | Đặt mật khẩu xác thực HTTP/FTP. |
| --post-data=chuoi | Gửi yêu cầu POST thay vì GET kèm dữ liệu. chuoi định dạng "key1=value1&key2=value2" |
| -r | Bật chế độ tải đệ quy (recursive). |
| -l do_sau | Đặt độ sâu đệ quy tối đa. Mặc định là 5. |
| -m | Bật các tùy chọn phù hợp cho mirroring. Bật đệ quy, time-stamping, độ sâu vô hạn, giữ listing thư mục FTP. |
| -p | Tải tất cả file cần thiết để hiển thị đúng trang HTML (ảnh, CSS, JS...). |
Ví dụ
Tải file từ server HTTPS
Tải một file đơn giản, cách dùng cơ bản:
wget https://www.example.com/file.zip
Tiếp tục tải file bị ngắt
Nếu tải chưa xong, dùng tùy chọn -c để tiếp tục:
wget -c https://www.example.com/file.zip
Tải từ danh sách file, ghi log thêm
Nếu có file text chứa danh sách URL, truyền trực tiếp cho wget và ghi log kết quả:
wget -a log.txt -i url-list.txt
Cũng có thể dùng -o để ghi log, sẽ ghi đè file log cũ nếu đã tồn tại.
Tải file, thử lại 5 lần, im lặng
Thử lại tải file và không in tiến trình ra terminal:
wget -t 5 -q https://www.example.com/file.zip
Tải từ danh sách, chờ 6 giây giữa các lần, timeout 12 giây
Chờ giữa các lần tải để giảm tải server, hủy nếu server không phản hồi trong 12 giây:
wget -w 6 -T 12 -i url-list.txt
Tải file từ server FTPS cần user/pass
Tải từ server FTPS với user bob và pass boat:
wget --user=bob --password=boat ftps://ftp.example.com/file.zip
Tải file với yêu cầu POST
Gửi HTTP POST request thay vì GET mặc định, kèm dữ liệu. Có thể gửi chuỗi rỗng với --post-data:
wget --post-data="postcode=2000&country=Australia" https://www.example.com/file.zip
Ví dụ này gửi 2 dữ liệu POST: postcode và country.
Nếu làm POST request phức tạp, cURL linh hoạt hơn.
Tải thư mục đệ quy qua FTP với giới hạn độ sâu
Tải đệ quy sẽ tải nội dung thư mục và thư mục con. Giới hạn độ sâu 3 – nghĩa là thư mục lồng trong 3 cấp sẽ không tải:
wget -r -l 3 ftps://ftp.example.com/path/to/folder
Tải toàn bộ thư mục bao gồm tất cả nội dung qua FTP
wget -m ftps://ftp.example.com/path/to/folder
Clone toàn bộ trang web dùng Wget
Nếu muốn tải toàn bộ trang web – bao gồm ảnh, style, script, dùng:
wget -p https://www.example.com/page.html
Tỷ lệ thành công sẽ khác nhau – một số trang web hiện đại không hoạt động tốt khi tách khỏi môi trường gốc.