Apakah ada alat yang ada, yang dapat digunakan untuk mengunduh file besar melalui koneksi yang buruk?
Saya harus secara teratur mengunduh file yang relatif kecil: 300 MB, tetapi koneksi TCP yang lambat (80-120 KBytes / detik) terputus secara acak setelah 10-120 detik. (Ini jaringan perusahaan besar. Kami menghubungi admin mereka (bekerja dari India) beberapa kali, tetapi mereka tidak bisa atau tidak ingin melakukan apa pun.) Masalahnya mungkin dengan proxy terbalik / penyeimbang muatan.
Sampai sekarang saya menggunakan versi modifikasi pcurl: https://github.com/brunoborges/pcurl
Saya mengubah baris ini:
curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
untuk ini:
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} &
Saya harus menambahkan --speed-limit 2048 --speed-time 10
karena koneksi sebagian besar hanya hang selama beberapa menit ketika gagal.
Tetapi baru-baru ini bahkan skrip ini tidak dapat diselesaikan.
Satu masalah adalah tampaknya mengabaikan -C -
bagian, sehingga tidak "melanjutkan" segmen setelah coba lagi. Tampaknya memotong file temp terkait, dan mulai dari awal setelah masing-masing gagal. (Saya pikir opsi --range
dan -C
tidak dapat digunakan bersama-sama.)
Masalah lainnya adalah skrip ini mengunduh semua segmen secara bersamaan. Tidak dapat memiliki 300 segmen, yang hanya 10 diunduh pada satu waktu.
Saya sedang berpikir untuk menulis alat pengunduhan dalam C # untuk tujuan khusus ini, tetapi jika ada alat yang ada, atau jika perintah curl dapat bekerja dengan baik dengan parameter yang berbeda, maka saya dapat meluangkan waktu.
UPDATE 1: Info tambahan: Fungsionalitas unduhan paralel tidak boleh dihapus, karena mereka memiliki batas bandwidth (80-120 Kbytes / detik, kebanyakan 80) per koneksi, sehingga 10 koneksi dapat menyebabkan 10 kali percepatan. Saya harus menyelesaikan pengunduhan file dalam 1 jam, karena file dihasilkan setiap jam.
rsync
(yang akan memungkinkan Anda memulai kembali transfer)?lftp
juga memungkinkan untuk memulai kembali transmisi secara otomatis.