Có một công cụ hiện có, có thể được sử dụng để tải xuống các tệp lớn qua kết nối xấu?
Tôi phải thường xuyên tải xuống một tệp tương đối nhỏ: 300 MB, nhưng kết nối TCP chậm (80-120 KB / giây) bị ngắt ngẫu nhiên sau 10-120 giây. .
Cho đến bây giờ tôi đã sử dụng một phiên bản sửa đổi của pcurl: https://github.com/brunoborges/pcurl
Tôi đã thay đổi dòng này:
curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
đến đây:
curl -s --retry 9999 --retry-delay 3 --speed-limit 2048 --speed-time 10 \
--retry-max-time 0 -C - --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
Tôi đã phải thêm --speed-limit 2048 --speed-time 10
bởi vì kết nối chủ yếu chỉ bị treo trong vài phút khi nó không thành công.
Nhưng gần đây ngay cả kịch bản này không thể hoàn thành.
Một vấn đề là dường như bỏ qua -C -
phần này, vì vậy nó không "tiếp tục" phân khúc sau khi thử lại. Nó dường như cắt ngắn tệp tạm thời liên quan và bắt đầu lại từ đầu sau mỗi lần thất bại. (Tôi nghĩ --range
và -C
lựa chọn không thể được sử dụng cùng nhau.)
Vấn đề khác là tập lệnh này tải xuống tất cả các phân đoạn cùng một lúc. Nó không thể có 300 phân đoạn, trong đó chỉ có 10 đoạn được tải xuống cùng một lúc.
Tôi đã nghĩ đến việc viết một công cụ tải xuống bằng C # cho mục đích cụ thể này, nhưng nếu có một công cụ hiện có hoặc nếu lệnh curl có thể hoạt động chính xác với các tham số khác nhau, thì tôi có thể dành chút thời gian.
CẬP NHẬT 1: Thông tin bổ sung: Không nên xóa chức năng tải xuống song song, vì chúng có giới hạn băng thông (80-120 Kbytes / giây, chủ yếu là 80) cho mỗi kết nối, do đó 10 kết nối có thể gây tăng tốc 10 lần. Tôi phải hoàn thành việc tải xuống tệp trong 1 giờ, vì tệp được tạo hàng giờ.
rsync
(sẽ cho phép bạn khởi động lại chuyển)?lftp
cũng cho phép tự động khởi động lại truyền.