Cách sử dụng curl để tải tệp xuống từ dòng lệnh Linux

Linux Xoăn lệnh có thể làm được nhiều việc hơn là tải xuống các tập tin. Tìm hiểu những gì Xoăn có khả năng, và khi nào bạn nên sử dụng nó thay vì wget.

curl so với wget: Sự khác biệt là gì?

Mọi người thường đấu tranh để xác định các điểm mạnh tương đối của wgetXoăn các lệnh. Các lệnh có một số chồng chéo chức năng. Mỗi người đều có thể truy xuất tệp từ các vị trí từ xa, nhưng đó là nơi mà sự tương đồng kết thúc.

wget là một công cụ tuyệt vời để tải xuống nội dung và tệp. Nó có thể tải xuống các tệp, trang web và thư mục. Nó chứa các quy trình thông minh để duyệt các liên kết trong các trang web và tải xuống đệ quy nội dung trên toàn bộ trang web. Nó là vượt trội với tư cách là một trình quản lý tải xuống dòng lệnh.

Xoăn đáp ứng một nhu cầu hoàn toàn khác nhau. Có, nó có thể truy xuất tệp, nhưng nó không thể điều hướng đệ quy một trang web đang tìm kiếm nội dung để truy xuất. Gì Xoăn thực ra là cho phép bạn tương tác với các hệ thống từ xa bằng cách đưa ra yêu cầu đối với các hệ thống đó, đồng thời truy xuất và hiển thị phản hồi của chúng cho bạn. Những câu trả lời đó có thể là nội dung trang web và tệp, nhưng chúng cũng có thể chứa dữ liệu được cung cấp qua dịch vụ web hoặc API do “câu hỏi” được yêu cầu bởi curl.

Xoăn không giới hạn ở các trang web. Xoăn hỗ trợ hơn 20 giao thức, bao gồm HTTP, HTTPS, SCP, SFTP và FTP. Và có thể cho rằng, do khả năng xử lý vượt trội của các đường ống Linux, Xoăn có thể được tích hợp dễ dàng hơn với các lệnh và tập lệnh khác.

Tác giả của Xoăn có một trang web mô tả sự khác biệt mà anh ấy thấy giữa Xoănwget.

Cài đặt cuộn tóc

Trong số các máy tính được sử dụng để nghiên cứu bài viết này, Fedora 31 và Manjaro 18.1.0 có Xoăn đã được cài đặt. Xoăn phải được cài đặt trên Ubuntu 18.04 LTS. Trên Ubuntu, hãy chạy lệnh này để cài đặt nó:

sudo apt-get install curl

Phiên bản cuộn tròn

Các --phiên bản tùy chọn làmXoănbáo cáo phiên bản của nó. Nó cũng liệt kê tất cả các giao thức mà nó hỗ trợ.

curl - sự đảo ngược

Truy xuất một trang web

Nếu chúng ta chỉ Xoăn tại một trang web, nó sẽ truy xuất nó cho chúng tôi.

curl //www.bbc.com

Nhưng hành động mặc định của nó là kết xuất nó vào cửa sổ đầu cuối dưới dạng mã nguồn.

Hãy coi chừng: Nếu bạn không nói Xoăn bạn muốn thứ gì đó được lưu trữ dưới dạng tệp, nó sẽ luôn luôn kết xuất nó vào cửa sổ đầu cuối. Nếu tệp mà nó đang truy xuất là tệp nhị phân, kết quả có thể không thể đoán trước được. Trình bao có thể cố gắng diễn giải một số giá trị byte trong tệp nhị phân dưới dạng ký tự điều khiển hoặc trình tự thoát.

Lưu dữ liệu vào tệp

Hãy nói curl chuyển hướng đầu ra thành một tệp:

curl //www.bbc.com> bbc.html

Lần này chúng tôi không thấy thông tin đã truy xuất, thông tin được gửi thẳng đến tệp cho chúng tôi. Vì không có đầu ra cửa sổ đầu cuối để hiển thị, Xoăn xuất ra một tập hợp thông tin tiến trình.

Nó không làm được điều này trong ví dụ trước vì thông tin tiến trình sẽ nằm rải rác khắp mã nguồn của trang web, vì vậy Xoăn đã tự động đàn áp nó.

Trong ví dụ này,Xoăn phát hiện rằng đầu ra đang được chuyển hướng đến một tệp và rằng việc tạo thông tin tiến trình là an toàn.

Thông tin được cung cấp là:

  • % Toàn bộ: Tổng số tiền cần truy xuất.
  • % Nhận: Tỷ lệ phần trăm và giá trị thực tế của dữ liệu được truy xuất cho đến nay.
  • % Xferd: Phần trăm và thực tế đã gửi, nếu dữ liệu đang được tải lên.
  • Tốc độ trung bình Dload: Tốc độ tải xuống trung bình.
  • Tải lên tốc độ trung bình: Tốc độ tải lên trung bình.
  • Tổng thời gian: Tổng thời gian chuyển giao ước tính.
  • Thời gian đã dành: Thời gian đã trôi qua cho đến nay cho lần chuyển tiền này.
  • Thời gian còn lại: Thời gian ước tính còn lại để quá trình chuyển hoàn tất
  • Tốc độ hiện tại: Tốc độ truyền hiện tại cho lần chuyển này.

Bởi vì chúng tôi đã chuyển hướng đầu ra từ Xoăn vào một tệp, bây giờ chúng tôi có một tệp có tên “bbc.html”.

Bấm đúp vào tệp đó sẽ mở trình duyệt mặc định của bạn để nó hiển thị trang web đã truy xuất.

Lưu ý rằng địa chỉ trong thanh địa chỉ của trình duyệt là một tệp cục bộ trên máy tính này, không phải là một trang web từ xa.

Chúng tôi không cần phải chuyển hướng đầu ra để tạo một tệp. Chúng tôi có thể tạo một tệp bằng cách sử dụng -o (đầu ra) tùy chọn và nói Xoăn để tạo tệp. Ở đây chúng tôi đang sử dụng -o và cung cấp tên của tệp mà chúng tôi muốn tạo “bbc.html.”

curl -o bbc.html //www.bbc.com

Sử dụng thanh tiến trình để theo dõi tải xuống

Để thay thế thông tin tải xuống dựa trên văn bản bằng một thanh tiến trình đơn giản, hãy sử dụng -# (thanh tiến trình).

curl -x -o bbc.html //www.bbc.com

Khởi động lại quá trình tải xuống bị gián đoạn

Có thể dễ dàng khởi động lại quá trình tải xuống đã bị kết thúc hoặc bị gián đoạn. Hãy bắt đầu tải xuống một tệp lớn. Chúng tôi sẽ sử dụng bản dựng Hỗ trợ dài hạn mới nhất của Ubuntu 18.04. Chúng tôi đang sử dụng - đầu ra tùy chọn để chỉ định tên của tệp mà chúng tôi muốn lưu nó vào: “ubuntu180403.iso.”

curl --output ubuntu18043.iso //releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

Quá trình tải xuống bắt đầu và hoạt động theo cách của nó cho đến khi hoàn thành.

Nếu chúng tôi buộc phải làm gián đoạn quá trình tải xuống với Ctrl + C , chúng tôi được quay lại dấu nhắc lệnh và quá trình tải xuống bị hủy.

Để khởi động lại quá trình tải xuống, hãy sử dụng -C (tiếp tục tại) tùy chọn. Điều này gây ra Xoăn để khởi động lại quá trình tải xuống tại một điểm được chỉ định hoặc bù lại trong tệp đích. Nếu bạn sử dụng dấu gạch ngang - như sự bù đắp, Xoăn sẽ xem xét phần đã được tải xuống của tệp và xác định độ lệch chính xác để sử dụng cho chính nó.

curl -C - --output ubuntu18043.iso //releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

Quá trình tải xuống được khởi động lại. Xoăn báo cáo phần bù mà tại đó nó đang khởi động lại.

Truy xuất tiêu đề HTTP

Với -TÔI (đầu), bạn chỉ có thể truy xuất các tiêu đề HTTP. Điều này cũng giống như việc gửi lệnh HTTP HEAD đến máy chủ web.

curl -Tôi www.twitter.com

Lệnh này chỉ lấy thông tin; nó không tải xuống bất kỳ trang web hoặc tệp nào.

Tải xuống nhiều URL

Sử dụng xargs chúng tôi có thể tải xuống nhiều URL cùng một lúc. Có lẽ chúng tôi muốn tải xuống một loạt các trang web tạo nên một bài báo hoặc hướng dẫn duy nhất.

Sao chép các URL này vào trình chỉnh sửa và lưu vào tệp có tên “urls-to-download.txt”. Chúng ta có thể sử dụng xargs để coi nội dung của mỗi dòng của tệp văn bản như một tham số mà nó sẽ cấp đến Xoăn, đến lượt mình.

//tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#1 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#2 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#3 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#4 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#5

Đây là lệnh chúng ta cần sử dụng để có xargs chuyển các URL này tới Xoăn cùng một lúc:

xargs -n 1 curl -O <urls-to-download.txt

Lưu ý rằng lệnh này sử dụng -O (tệp từ xa) lệnh đầu ra, sử dụng chữ hoa “O.” Tùy chọn này gây ra Xoăn để lưu tệp đã truy xuất có cùng tên với tệp đó trên máy chủ từ xa.

Các -n 1 tùy chọn nói với xargs để coi mỗi dòng của tệp văn bản là một tham số duy nhất.

Khi chạy lệnh, bạn sẽ thấy nhiều lần tải xuống bắt đầu và kết thúc, lần lượt.

Kiểm tra trong trình duyệt tệp cho thấy nhiều tệp đã được tải xuống. Mỗi cái mang tên nó có trên máy chủ từ xa.

LIÊN QUAN:Cách sử dụng lệnh xargs trên Linux

Tải xuống tệp từ máy chủ FTP

Sử dụng Xoăn với máy chủ Giao thức truyền tệp (FTP) thật dễ dàng, ngay cả khi bạn phải xác thực bằng tên người dùng và mật khẩu. Để chuyển tên người dùng và mật khẩu với Xoăn sử dụng -u (người dùng) và nhập tên người dùng, dấu hai chấm “:” và mật khẩu. Không đặt dấu cách trước hoặc sau dấu hai chấm.

Đây là một máy chủ FTP miễn phí để thử nghiệm do Rebex lưu trữ. Trang web FTP thử nghiệm có tên người dùng được đặt trước là “demo” và mật khẩu là “password”. Không sử dụng loại tên người dùng và mật khẩu yếu này trên máy chủ FTP sản xuất hoặc "thực".

curl -u demo: mật khẩu ftp://test.rebex.net

Xoăn tìm ra rằng chúng tôi đang trỏ nó đến một máy chủ FTP và trả về danh sách các tệp có trên máy chủ.

Tệp duy nhất trên máy chủ này là tệp “readme.txt”, có độ dài 403 byte. Hãy lấy nó. Sử dụng lệnh tương tự như một lúc trước, với tên tệp được nối vào nó:

curl -u demo: mật khẩu ftp://test.rebex.net/readme.txt

Tệp được truy xuất và Xoăn hiển thị nội dung của nó trong cửa sổ đầu cuối.

Trong hầu hết các trường hợp, sẽ thuận tiện hơn nếu tệp đã truy xuất được lưu vào đĩa cho chúng tôi, thay vì hiển thị trong cửa sổ đầu cuối. Một lần nữa, chúng ta có thể sử dụng -O (tệp từ xa) ra lệnh để lưu tệp vào đĩa, với cùng tên tệp mà tệp có trên máy chủ từ xa.

curl -O -u demo: mật khẩu ftp://test.rebex.net/readme.txt

Tệp được truy xuất và lưu vào đĩa. Chúng ta có thể sử dụng ls để kiểm tra chi tiết tệp. Nó có cùng tên với tệp trên máy chủ FTP và có cùng độ dài, 403 byte.

ls -hl readme.txt

LIÊN QUAN:Cách sử dụng lệnh FTP trên Linux

Gửi thông số tới máy chủ từ xa

Một số máy chủ từ xa sẽ chấp nhận các tham số trong các yêu cầu được gửi đến chúng. Ví dụ: các tham số có thể được sử dụng để định dạng dữ liệu trả về hoặc chúng có thể được sử dụng để chọn dữ liệu chính xác mà người dùng muốn truy xuất. Thường có thể tương tác với các giao diện lập trình ứng dụng web (API) bằng cách sử dụng Xoăn.

Ví dụ đơn giản, trang web ipify có API có thể được truy vấn để xác định địa chỉ IP bên ngoài của bạn.

curl //api.ipify.org

Bằng cách thêm định dạng tham số cho lệnh, với giá trị là “json”, chúng ta có thể yêu cầu lại địa chỉ IP bên ngoài của mình, nhưng lần này dữ liệu trả về sẽ được mã hóa ở định dạng JSON.

curl //api.ipify.org?format=json

Đây là một ví dụ khác sử dụng API Google. Nó trả về một đối tượng JSON mô tả một cuốn sách. Thông số bạn phải cung cấp là số Sách Tiêu chuẩn Quốc tế (ISBN) của một cuốn sách. Bạn có thể tìm thấy những thứ này trên bìa sau của hầu hết các cuốn sách, thường là bên dưới mã vạch. Thông số chúng tôi sẽ sử dụng ở đây là “0131103628.”

curl //www.googleapis.com/books/v1/volumes?q=isbn:0131103628

Dữ liệu trả về là toàn diện:

Đôi khi cuộn tròn, Đôi khi wget

Nếu tôi muốn tải xuống nội dung từ một trang web và có cấu trúc cây của trang web được tìm kiếm đệ quy cho nội dung đó, tôi sẽ sử dụng wget.

Nếu tôi muốn tương tác với máy chủ hoặc API từ xa và có thể tải xuống một số tệp hoặc trang web, tôi sẽ sử dụng Xoăn. Đặc biệt nếu giao thức là một trong nhiều giao thức không được hỗ trợ bởi wget.


$config[zx-auto] not found$config[zx-overlay] not found