wget tiện ích là lựa chọn tốt nhất để tải tập tin từ internet. wget có thể xử lý khá nhiều tình huống tải xuống phức tạp bao gồm tải xuống tệp lớn, tải xuống đệ quy, tải xuống không tương tác, tải xuống nhiều tệp, v.v.
Trong bài viết này chúng ta hãy xem lại cách sử dụng wget cho nhiều tình huống tải xuống khác nhau bằng cách sử dụng 15 ví dụ wget tuyệt vời.
1. Tải xuống một tệp với wget
Ví dụ sau tải xuống một tệp từ internet và lưu trữ trong thư mục hiện tại.
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Trong khi tải xuống, nó sẽ hiển thị thanh tiến trình với thông tin sau:
- % tuổi hoàn tất tải xuống (ví dụ:31% như hiển thị bên dưới)
- Tổng số byte được tải xuống cho đến nay (ví dụ:1.213.592 byte như hiển thị bên dưới)
- Tốc độ tải xuống hiện tại (ví dụ:68,2K/s như hiển thị bên dưới)
- Thời gian còn lại để tải xuống (ví dụ:eta 34 giây như hiển thị bên dưới)
Đang tải xuống:
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Saving to: `strx25-0.9.2.1.tar.bz2.1' 31% [=================> 1,213,592 68.2K/s eta 34s
Tải xuống hoàn tất:
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Saving to: `strx25-0.9.2.1.tar.bz2' 100%[======================>] 3,852,374 76.8K/s in 55s 2009-09-25 11:15:30 (68.7 KB/s) - `strx25-0.9.2.1.tar.bz2' saved [3852374/3852374]
2. Tải xuống và lưu trữ bằng tên tệp khác bằng wget -O
Theo mặc định, wget sẽ chọn tên tệp từ từ cuối cùng sau dấu gạch chéo chuyển tiếp cuối cùng, điều này có thể không phải lúc nào cũng phù hợp.
Sai: Ví dụ sau sẽ tải xuống và lưu trữ tệp có tên:download_script.php?src_id=7701
$ wget http://www.vim.org/scripts/download_script.php?src_id=7701
Mặc dù tệp đã tải xuống ở định dạng zip nhưng nó sẽ được lưu trữ trong tệp như hiển thị bên dưới.
$ ls download_script.php?src_id=7701
Đúng: Để khắc phục sự cố này, chúng tôi có thể chỉ định tên tệp đầu ra bằng tùy chọn -O là:
$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
3. Chỉ định Tốc độ tải xuống / Tốc độ tải xuống bằng wget –limit-rate
Trong khi thực thi wget, theo mặc định nó sẽ cố gắng chiếm hết băng thông có thể. Điều này có thể không được chấp nhận khi bạn tải xuống các tệp lớn trên máy chủ sản xuất. Vì vậy, để tránh điều đó chúng ta có thể giới hạn tốc độ tải xuống bằng cách sử dụng –limit-rate như hiển thị bên dưới.
Trong ví dụ sau, tốc độ tải xuống bị giới hạn ở 200k
$ wget --limit-rate=200k http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
4. Tiếp tục tải xuống chưa hoàn tất bằng wget -c
Khởi động lại quá trình tải xuống bị dừng giữa chừng bằng tùy chọn wget -c như hiển thị bên dưới.
$ wget -c http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Điều này rất hữu ích khi bạn bắt đầu tải xuống một tệp rất lớn nhưng bị gián đoạn giữa chừng. Thay vì bắt đầu lại toàn bộ quá trình tải xuống, bạn có thể bắt đầu tải xuống từ nơi bị gián đoạn bằng cách sử dụng tùy chọn -c
Lưu ý: Nếu quá trình tải xuống bị dừng ở giữa, khi bạn khởi động lại quá trình tải xuống mà không có tùy chọn -c, wget sẽ tự động thêm .1 vào tên tệp vì một tệp có tên trước đó đã tồn tại. Nếu tệp có đuôi .1 đã tồn tại, nó sẽ tải xuống tệp có đuôi .2 ở cuối.
5. Tải xuống trong nền bằng wget -b
Để tải xuống dung lượng lớn, hãy đặt tệp tải xuống ở chế độ nền bằng tùy chọn wget -b như hiển thị bên dưới.
$ wget -b http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Continuing in background, pid 1984. Output will be written to `wget-log'.
Nó sẽ bắt đầu quá trình tải xuống và gửi lại lời nhắc shell cho bạn. Bạn luôn có thể kiểm tra trạng thái tải xuống bằng cách sử dụng tail -f như hiển thị bên dưới.
$ tail -f wget-log Saving to: `strx25-0.9.2.1.tar.bz2.4' 0K .......... .......... .......... .......... .......... 1% 65.5K 57s 50K .......... .......... .......... .......... .......... 2% 85.9K 49s 100K .......... .......... .......... .......... .......... 3% 83.3K 47s 150K .......... .......... .......... .......... .......... 5% 86.6K 45s 200K .......... .......... .......... .......... .......... 6% 33.9K 56s 250K .......... .......... .......... .......... .......... 7% 182M 46s 300K .......... .......... .......... .......... .......... 9% 57.9K 47s
Ngoài ra, hãy nhớ xem lại bài viết nhiều đuôi trước đây của chúng tôi về cách sử dụng lệnh tail một cách hiệu quả để xem nhiều tệp.
6. Mặt nạ tác nhân người dùng và hiển thị wget như trình duyệt Sử dụng wget –user-agent
Một số trang web có thể không cho phép bạn tải xuống trang của nó bằng cách xác định rằng tác nhân người dùng không phải là trình duyệt. Vì vậy, bạn có thể che giấu tác nhân người dùng bằng cách sử dụng tùy chọn –user-agent và hiển thị wget giống như trình duyệt như hiển thị bên dưới.
$ wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" URL-TO-DOWNLOAD
7. Kiểm tra URL tải xuống bằng wget –spider
Khi bạn định thực hiện tải xuống theo lịch trình, bạn nên kiểm tra xem việc tải xuống có diễn ra tốt đẹp hay không vào thời gian đã lên lịch hay không. Để làm như vậy, hãy sao chép chính xác dòng này từ lịch trình, sau đó thêm tùy chọn –spider để kiểm tra.
$ wget --spider DOWNLOAD-URL
Nếu URL được cung cấp là chính xác, nó sẽ thông báo
$ wget --spider download-url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Remote file exists and could contain further links, but recursion is disabled -- not retrieving.
Điều này đảm bảo rằng việc tải xuống sẽ thành công vào thời gian đã lên lịch. Nhưng khi bạn cung cấp sai URL, bạn sẽ gặp lỗi sau.
$ wget --spider download-url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 404 Not Found Remote file does not exist -- broken link!!!
Bạn có thể sử dụng tùy chọn nhện trong các trường hợp sau:
- Kiểm tra trước khi lên lịch tải xuống.
- Theo dõi xem một trang web có khả dụng hay không trong những khoảng thời gian nhất định.
- Kiểm tra danh sách các trang từ dấu trang của bạn và tìm hiểu xem trang nào vẫn tồn tại.
8. Tăng tổng số lần thử lại bằng cách sử dụng wget –tries
Nếu kết nối internet có vấn đề và nếu tệp tải xuống lớn thì có thể xảy ra lỗi khi tải xuống. Theo mặc định, wget sẽ thử lại 20 lần để tải xuống thành công.
Nếu cần, bạn có thể tăng số lần thử lại bằng cách sử dụng tùy chọn –tries như hiển thị bên dưới.
$ wget --tries=75 DOWNLOAD-URL
9. Tải xuống nhiều tệp/URL bằng Wget -i
Đầu tiên, lưu trữ tất cả các tệp tải xuống hoặc URL trong tệp văn bản dưới dạng:
$ cat > download-file-list.txt URL1 URL2 URL3 URL4
Tiếp theo, đưa ra download-file-list.txt làm đối số cho wget bằng cách sử dụng tùy chọn -i như hiển thị bên dưới.
$ wget -i download-file-list.txt
10. Tải xuống trang web đầy đủ bằng cách sử dụng wget –mirror
Sau đây là dòng lệnh mà bạn muốn thực thi khi muốn tải xuống một trang web đầy đủ và có sẵn để xem cục bộ.
$ wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
- –mirror :bật các tùy chọn phù hợp để phản chiếu.
- -p :tải xuống tất cả các tệp cần thiết để hiển thị chính xác một trang HTML nhất định.
- –convert-links :sau khi tải xuống, chuyển đổi các liên kết trong tài liệu để xem cục bộ.
- -P ./LOCAL-DIR :lưu tất cả các file và thư mục vào thư mục được chỉ định.
11. Từ chối một số loại tệp nhất định trong khi tải xuống bằng wget –reject
Bạn đã tìm thấy một trang web hữu ích nhưng không muốn tải xuống hình ảnh, bạn có thể chỉ định như sau.
$ wget --reject=gif WEBSITE-TO-BE-DOWNLOADED
12. Ghi thông điệp vào tệp nhật ký thay vì stderr Sử dụng wget -o
Khi bạn muốn nhật ký được chuyển hướng đến tệp nhật ký thay vì thiết bị đầu cuối.
$ wget -o download.log DOWNLOAD-URL
13. Thoát khỏi quá trình tải xuống khi vượt quá kích thước nhất định bằng wget -Q
Khi bạn muốn dừng tải xuống khi nó vượt quá 5 MB, bạn có thể sử dụng dòng lệnh wget sau.
$ wget -Q5m -i FILE-WHICH-HAS-URLS
Lưu ý: Hạn ngạch này sẽ không có hiệu lực khi bạn tải xuống một URL. Bất kể kích thước hạn ngạch, mọi thứ sẽ được tải xuống khi bạn chỉ định một tệp. Hạn ngạch này chỉ áp dụng cho các lượt tải xuống đệ quy.
14. Chỉ tải xuống một số loại tệp nhất định bằng wget -r -A
Bạn có thể sử dụng điều này trong các tình huống sau:
- Tải xuống tất cả hình ảnh từ một trang web
- Tải xuống tất cả video từ một trang web
- Tải xuống tất cả tệp PDF từ một trang web
$ wget -r -A.pdf http://url-to-webpage-with-pdfs/
15. Tải xuống FTP bằng wget
Bạn có thể sử dụng wget để thực hiện tải xuống FTP như hiển thị bên dưới.
Tải xuống FTP ẩn danh bằng Wget
$ wget ftp-url
Tải xuống FTP bằng wget với xác thực tên người dùng và mật khẩu.
$ wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL
Nếu bạn thích bài viết này, vui lòng đánh dấu nó bằng Delicious hoặc Stumble.