Wget là một tiện ích dòng lệnh không tương tác để tải xuống tài nguyên từ một URL được chỉ định. Do không tương tác, wget có thể hoạt động ở chế độ nền hoặc trước khi người dùng đăng nhập. Chương trình được thiết kế đặc biệt cho các kết nối kém, khiến công cụ này đặc biệt mạnh mẽ trong các điều kiện không ổn định. Mặc dù wget không được tích hợp sẵn với macOS, nhưng người dùng có thể dễ dàng tải xuống và cài đặt với Homebrew, trình quản lý gói Mac tốt nhất hiện có.
Tìm hiểu về tiện ích dòng lệnh wget trên Mac
1. Tải xuống và cài đặt Homebrew
Để cài đặt Homebrew, hãy mở cửa sổ Terminal và thực hiện lệnh sau, được lấy từ trang web Homebrew (link tham khảo https://brew.sh/):
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Người dùng có thể nhận thấy lệnh được gọi là curl, một tiện ích dòng lệnh khác để tải xuống các file từ một URL, tích hợp sẵn với cài đặt Ruby có trong macOS.
2. Cài đặt wget
Khi hoàn tất cài đặt, ta sẽ sử dụng Homebrew để cài đặt wget. Trong Terminal, chạy lệnh sau để tải xuống và cài đặt wget:
brew install wget
Người dùng sẽ nhận được cập nhật trực tiếp về tiến trình tải xuống và cài đặt bất kỳ dependency nào được yêu cầu để chạy wget trên hệ thống.
Nếu Homebrew đã được cài đặt, hãy nhớ chạy lệnh brew update để nhận các bản sao mới nhất của tất cả các formula (gói phần mềm).
3. Sử dụng wget
Mục đích của wget là tải xuống nội dung từ URL. Nó là một công cụ không tương tác nhanh chóng và đơn giản để tải xuống các file từ bất kỳ URL nào có thể truy cập công khai.
Tải xuống một file duy nhất
Giống như lệnh curl, wget lấy tài nguyên từ xa thông qua URL và lưu nó vào một vị trí được chỉ định trên máy tính. Cấu trúc lệnh hoạt động như sau:
wget -O path/to/local.copy http://example.com/url/to/download.html
Lệnh trên sẽ lưu file được chỉ định trong URL vào vị trí được chỉ định trên máy tính. Nếu flag -O bị loại trừ, URL đã chỉ định sẽ được tải xuống thư mục hiện hành.
Tải về một thư mục đệ quy
Để tải xuống toàn bộ cây thư mục với wget, người dùng cần sử dụng các flag -r/--recursive và -np/--no-parent như sau:
wget -e robots=off -r -np https://www.w3.org/History/19921103-hypertext/hypertext/
Lệnh này sẽ khiến wget đi theo bất kỳ liên kết nào được tìm thấy trên các tài liệu trong thư mục được chỉ định, tải xuống đệ quy toàn bộ đường dẫn URL được chỉ định.
Lệnh đó cũng bao gồm -e robots=off, bỏ qua các hạn chế trong file robot.txt. Nói chung, việc vô hiệu hóa robot.txt để ngăn chặn các quá trình tải xuống bị rút ngắn là một ý tưởng không tồi.
4. Các flag wget khác
Ngoài các flag ở trên, một số flag wget sau đây là hữu ích nhất:
Kiểm soát tải xuống
- wget -X /absolute/path/to/directory sẽ loại trừ một thư mục cụ thể trên máy chủ từ xa.
- wget -nH xóa các thư mục hostname. Hãy nhớ rằng, hostname là một phần của URL chứa tên miền và kết thúc bằng một TLD như “.com”. Ví dụ, thư mục có tên là www.w3.org trong ví dụ trước sẽ bị bỏ qua, và bắt đầu tải xuống với thư mục “History” thay thế.
- wget --cut-dirs=# bỏ qua số lượng thư mục được chỉ định dưới URL trước khi bắt đầu tải xuống các file. Ví dụ, -nH --cut-dirs=1 sẽ thay đổi đường dẫn được chỉ định của “ftp.xemacs.org/pub/xemacs/” thành “/xemacs/”, giảm số lượng thư mục mẹ trống trong quá trình tải xuống cục bộ.
- wget -R index.html/wget --reject index.html sẽ bỏ qua mọi file khớp với tên file đã chỉ định. Trong trường hợp này, flag này sẽ loại trừ tất cả các file index. Ký tự * có thể được sử dụng làm ký tự đại diện, giống như *.png, sẽ bỏ qua tất cả các file có phần mở rộng PNG.
- wget -i file chỉ định URL mục tiêu từ một file đầu vào. File đầu vào phải là file HTML hoặc được phân tích cú pháp dưới dạng HTML với flag bổ sung --force-html.
- wget -nc/wget --no-clobber sẽ không ghi đè lên các file đã tồn tại ở đích.
- wget -c/wget --continue sẽ tiếp tục tải xuống các file đã được tải xuống một phần.
- wget -t 10 sẽ cố tải xuống tài nguyên tối đa 10 lần trước khi thông báo thất bại.
Điều chỉnh mức độ ghi nhật ký
- wget -d cho phép gỡ lỗi đầu ra.
- wget -o path/to/log.txt cho phép ghi nhật ký đầu ra vào thư mục được chỉ định thay vì hiển thị đầu ra tiêu chuẩn khi đăng nhập.
- wget -q vô hiệu hóa tất cả đầu ra wget, kể cả thông báo lỗi.
- wget -v cho phép hiển thị đầu ra chi tiết mặc định của wget.
- wget --no-verbose tắt thông báo nhật ký nhưng hiển thị thông báo lỗi.
Bài viết đã bao gồm phần lớn các trường hợp sử dụng wget, nhưng trình tải xuống này còn có nhiều khả năng hơn nữa, bạn có thể tìm hiểu thêm trong quá trình sử dụng.
Chúc bạn thực hiện thành công!