Lệnh wget là một công cụ dòng lệnh mạnh mẽ trong Linux, cho phép người dùng tải nội dung từ máy chủ thông qua các giao thức phổ biến như HTTP, HTTPS và FTP. Thay vì phải thao tác thủ công qua trình duyệt để tải tệp, wget giúp tự động hóa quy trình tải xuống, hỗ trợ cả những tác vụ phức tạp như tải toàn bộ thư mục theo kiểu đệ quy. Điều này không chỉ nâng cao hiệu suất làm việc mà còn giúp tiết kiệm đáng kể thời gian khi xử lý nhiều tệp cùng lúc.
Trong hướng dẫn chi tiết này, bạn sẽ được khám phá những tính năng nổi bật của wget, cùng với các ví dụ lệnh cụ thể mà bạn có thể áp dụng trực tiếp trong terminal Linux, nhằm tối ưu quy trình tải dữ liệu cho các dự án hoặc công việc cá nhân.
Trong bài hướng dẫn này, bạn sẽ học:
● Cách tải một tệp từ website bằng wget
● Cách tải một thư mục
● Cách tạo bản sao (mirror) một website
● Cách tải và tự động giải nén (untar) một tệp
● Cách xác thực với wget
● Cách sử dụng chế độ im lặng (quiet mode) với wget
Yêu cầu, Quy ước và Phiên bản Phần mềm sử dụng
Hệ thống: Linux (bất kỳ bản phân phối nào)
Phần mềm: wget
Yêu cầu khác: Quyền truy cập cao (privileged access) vào hệ thống Linux của bạn dưới dạng root hoặc thông qua lệnh sudo.
Quy ước:
- # – Yêu cầu các lệnh Linux phải được thực thi với quyền root, hoặc trực tiếp với người dùng root hoặc sử dụng lệnh sudo.
- $ – Yêu cầu các lệnh Linux phải được thực thi với quyền người dùng thường (non-privileged user).
Tải một tệp từ website bằng wget
Wget giúp tải tệp trở nên vô cùng đơn giản và dễ dàng. Đây có lẽ là công cụ dòng lệnh tốt nhất trên Linux cho việc tải tệp, mặc dù cũng có các công cụ khác như cURL có thể thực hiện nhiệm vụ tương tự.
Hãy cùng xem một vài ví dụ về cách sử dụng wget để tải xuống một bản phân phối Linux, các tệp ISO được cung cấp trên các website của nhà phát triển.
Lệnh cơ bản nhất bạn có thể sử dụng với wget chỉ cần cung cấp URL của tệp mà bạn muốn tải:
$ wget http://example.com/linux.iso
Wget sẽ tải tệp được chỉ định về vị trí mà bạn đang chạy lệnh. Nó sẽ hiển thị tiến trình tải, tốc độ hiện tại và ước tính thời gian hoàn thành. Ngoài ra, wget cũng in ra một số thông tin khác về quá trình kết nối đến máy chủ và yêu cầu tệp, thông tin này có thể hữu ích để chẩn đoán các sự cố kết nối.
Chỉ định thư mục và tên tệp
Bạn cũng có thể chỉ định thư mục lưu tệp tải về cũng như chọn tên cho tệp đó. Sử dụng tham số -O (output) và điền đường dẫn cùng tên tệp sau URL.
$ wget http://example.com/linux.iso -O /path/to/dir/myfile.iso
Tiếp tục tải
Một tính năng rất tiện lợi của wget là khả năng tiếp tục tải nếu quá trình tải bị gián đoạn. Nếu tệp tải về của bạn bị dừng lại (có thể do nhấn Ctrl+C hoặc sự cố kết nối), bạn có thể tiếp tục tải từ nơi dừng bằng cách sử dụng tham số -c. Chỉ cần đảm bảo rằng bạn đang ở đúng thư mục hoặc thông báo cho wget vị trí của tệp tải về tạm thời với tham số -O.
wget -c http://example.com/linux.iso
Tải nhiều tệp
Nếu bạn muốn tải nhiều tệp, hãy tạo một tài liệu văn bản chứa danh sách các liên kết tải, mỗi URL trên một dòng riêng. Sau đó, chạy wget với tham số -i và chỉ định đường dẫn tới tệp văn bản đó.
$ wget -i download-links.txt
Giới hạn tốc độ tải
Một tùy chọn hữu ích khác của wget là giới hạn tốc độ tải tệp. Điều này có ích nếu bạn không muốn một lần tải lớn chiếm hết băng thông mạng, gây độ trễ cho người dùng khác trên mạng của bạn. Sử dụng tham số –limit-rate và chỉ định đơn vị k (kilobytes), m (megabytes) hoặc g (gigabytes). Ví dụ, lệnh sau sẽ tải tệp với tốc độ tối đa là 500 KB mỗi giây:
$ wget --limit-rate 500k http://example.com/linux.iso
Tải một thư mục
Wget có khả năng tải toàn bộ một thư mục theo kiểu đệ quy từ máy chủ FTP hoặc web (HTTP/HTTPS).
Đối với FTP, chỉ cần sử dụng tham số -r (recursive) và chỉ định thư mục cần tải:
$ wget -r ftp://example.com/path/to/dir
Nếu bạn muốn tải một thư mục từ website, lệnh gần như tương tự; tuy nhiên, bạn thường cần thêm tham số –no-parent (hoặc -np) để ngăn wget theo dõi các liên kết quay lại trang chủ của website.
$ wget -r -np http://example.com/directory
Cách tạo bản sao một website
Wget có khả năng theo dõi tất cả các liên kết trên một website và tải về mọi thứ mà nó gặp phải trong quá trình duyệt. Điều này khiến wget trở thành công cụ cực kỳ mạnh mẽ, bởi không chỉ có thể tải về một thư mục hay nhiều tệp, mà nó còn có thể tạo bản sao offline của toàn bộ website.
Website thường bao gồm các tệp HTML, cùng với nhiều tệp hình ảnh (.jpg, .png), tệp CSS (bảng định dạng) và các tệp JavaScript (.js), cùng nhiều định dạng khác. Wget có thể tự động tìm và tải tất cả các tệp này, duy trì cấu trúc thư mục giống như website gốc, từ đó tạo ra một phiên bản offline của website đó.
Sử dụng tham số -m (mirror) trong lệnh wget kèm theo URL của website bạn muốn sao lưu:
$ wget -m http://example.com
Trong hầu hết các trường hợp, bạn cũng muốn thêm tham số -p (download all required page resources) để wget tải tất cả các tệp cần thiết hiển thị website offline chính xác, chẳng hạn như các tệp định dạng. Tham số -k cũng có thể được sử dụng để chỉnh sửa lại các liên kết trong website, giúp website hiển thị tốt hơn khi xem offline. Các tham số này tùy thuộc vào website bạn đang sao lưu.
$ wget -m -p -k http://example.com
Tải và tự động giải nén một tệp
Bạn có thể tiết kiệm thời gian khi tải về một tệp nén tar bằng cách kết hợp lệnh wget với tar, để tải xuống và giải nén trong cùng một lệnh. Để làm được điều này, sử dụng tham số -O –, cho biết wget sẽ tải tệp về và xuất ra standard output. Sau đó, dùng pipe (|) truyền trực tiếp đầu ra đó cho lệnh tar.
Ví dụ, để tải phiên bản mới nhất của WordPress và giải nén tệp tar trong một lệnh:
$ wget https://wordpress.org/latest.tar.gz -O - | tar -xz
Cách xác thực với wget
Nếu máy chủ HTTP hoặc FTP yêu cầu xác thực khi tải xuống, bạn có một vài tùy chọn để cung cấp tên đăng nhập và mật khẩu với wget. Các ví dụ sau sẽ hoạt động với cả FTP và HTTP.
Tùy chọn đầu tiên: Cung cấp tên đăng nhập và mật khẩu trực tiếp trong lệnh wget (phương pháp này không an toàn vì mật khẩu của bạn sẽ hiển thị trên màn hình hoặc trong lịch sử lệnh của người dùng):
$ wget --user=USERNAME --password=SECRET http://example.com/SecureFile.txt
Bạn chỉ cần thay USERNAME và SECRET bằng thông tin phù hợp.
Tùy chọn thứ hai: Để wget nhắc bạn nhập mật khẩu, giúp giữ mật khẩu ẩn đi:
$ wget --user=USERNAME --ask-password http://example.com/SecureFile.txt
Sử dụng chế độ im lặng với wget
Để ẩn hoàn toàn các thông báo xuất ra của wget, bạn có thể sử dụng tham số -q (quiet). Điều này đặc biệt hữu ích khi bạn sử dụng tham số -O – để xuất nội dung về standard output, vì nếu không sẽ làm đầy terminal của bạn với rất nhiều thông tin. Khi sử dụng -q, wget sẽ không xuất ra thông tin, và bạn sẽ biết lệnh tải đã hoàn tất khi terminal trở lại prompt bình thường.
$ wget -q http://example.com
Một tùy chọn tương tự khác là chạy wget ở chế độ nền bằng -b. Điều này cho phép bạn đóng terminal hoặc tiếp tục sử dụng nó cho các tác vụ khác trong khi lệnh wget vẫn chạy ngầm:
$ wget -b http://example.com/linux.iso
Wget sẽ lưu lại log đầu ra thông thường trong tệp văn bản (mặc định là wget-log) và hiển thị ID tiến trình (PID). Nếu bạn muốn hủy tải, bạn có thể sử dụng lệnh kill theo sau là PID đó.
Kết luận
Wget thực sự là một trong những công cụ dòng lệnh linh hoạt và mạnh mẽ nhất khi nói đến việc tải tệp trên hệ điều hành Linux. Với hàng loạt tùy chọn tinh chỉnh, nhiều trong số đó được xây dựng để giúp bạn tiết kiệm thời gian – đặc biệt là khả năng tải theo kiểu đệ quy – wget trở thành lựa chọn hàng đầu cho cả người dùng cá nhân lẫn quản trị viên hệ thống. Trong bài viết này, chúng ta mới chỉ chạm đến những cách sử dụng cơ bản nhất. Trên thực tế, wget còn ẩn chứa rất nhiều tiềm năng nâng cao đang chờ bạn khám phá và khai thác trong các kịch bản tự động hóa, lập lịch tải tệp, hoặc tích hợp vào các quy trình DevOps. Đừng ngại tìm hiểu sâu hơn – vì wget chắc chắn xứng đáng có một vị trí trong bộ công cụ của bất kỳ người dùng Linux chuyên nghiệp nào!