Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm chủ lệnh wget trên Linux: Hướng dẫn toàn diện với ví dụ thực tế

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.