Đang thử lại liên tục tải xuống với curl


17

Tôi đang dùng mac và có một danh sách các tệp tôi muốn tải xuống từ máy chủ ftp. Kết nối có một chút lỗi nên tôi muốn thử lại và tiếp tục nếu kết nối bị ngắt.

Tôi biết tôi có thể làm điều này với wget, nhưng thật không may, Mac OS X không đi kèm với wget. Tôi có thể cài đặt nó, nhưng để làm điều đó (trừ khi tôi đã bỏ lỡ điều gì đó) tôi cần cài đặt XCode và MacPorts trước, điều mà tôi muốn tránh.

Curl có sẵn mặc dù có vẻ như, nhưng tôi không biết làm thế nào nó hoạt động hoặc làm thế nào để sử dụng nó thực sự. Nếu tôi có một danh sách các tệp trong một tệp văn bản (một đường dẫn đầy đủ trên mỗi dòng, như ftp: // user: pass @ server / dir / file1 ), làm thế nào tôi có thể sử dụng curl để tải xuống tất cả các tệp đó? Và tôi có thể có được curl để không bao giờ bỏ cuộc? Giống như, thử lại vô hạn và tiếp tục tải xuống nơi nó rời đi và như vậy?

Câu trả lời:


20

Sau khi googling và người đàn ông đọc và một lúc như vậy tôi đã tìm ra một giải pháp hiệu quả cho tôi:

curl ftp://server/dir/file[01-30].ext --user user:pass -O --retry 999 --retry-max-time 0 -C -
  • [01-30] sẽ làm cho nó tải xuống 30 tệp có tên file01.ext, file02.ext, v.v.
  • --user user:pass nên rõ ràng
  • -O để xuất ra các tệp có tên gốc
  • --retry 999 thử lại 999 lần
  • --retry-max-time 0để ngăn chặn nó ra khỏi retrys. Hành vi mặc định nếu bạn không chỉ định độ trễ --retry-delay là ngủ một giây đầu tiên giữa các lần thử lại, sau đó nhân đôi số đó cho đến khi đạt được 10 phút. giữa thử lại
  • -C -để làm cho nó tiếp tục nơi nó bị rơi (nếu bạn chạy lại lệnh). Dấu gạch ngang sau đó nói với nó để tìm ra nơi để tiếp tục từ

Nếu ai đó biết cách lấy tên tệp từ một tệp thay vào đó, vui lòng cho tôi biết.


Trong trang người đàn ông có ghi như sau:

--url <URL>
Chỉ định một URL để tìm nạp. Tùy chọn này chủ yếu tiện dụng khi bạn muốn chỉ định (các) URL trong tệp cấu hình.

Có vẻ như đó có thể là một cái gì đó, nhưng không hiểu nó sẽ được sử dụng như thế nào ...


2

Bạn có thể sử dụng tùy chọn -K để cuộn tròn để chỉ định tệp cấu hình. Trong trường hợp đó, bạn sử dụng cú pháp:

optionname=<value>

Nếu bạn có một tệp chứa danh sách URL, bạn có thể sử dụng curl như thế này:

sed 's/\(.*\)/-O\nurl=\1/g' url_list.txt | curl -K -

mà biến đổi một danh sách các url, như:

http://host1.com/foo.html
http://host2.com/bar.html

thành một định dạng như thế này:

-O
url=http://host1.com/foo.html
-O
url=http://host2.com/bar.html

Curl đọc nó và giải thích từng tùy chọn như thế.

HTH

Ađam

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.