क्या कोई मौजूदा उपकरण है, जिसका उपयोग खराब कनेक्शन पर बड़ी फ़ाइलों को डाउनलोड करने के लिए किया जा सकता है?
मुझे नियमित रूप से एक अपेक्षाकृत छोटी फ़ाइल डाउनलोड करनी है: 300 एमबी, लेकिन धीमी (80-120 केबीटी / सेकंड) टीसीपी कनेक्शन यादृच्छिक रूप से 10-120 सेकंड के बाद टूट जाता है। (यह एक बड़ी कंपनी का नेटवर्क है। हमने कई बार उनके (भारत से काम करने वाले) लोगों से संपर्क किया, लेकिन वे कुछ भी नहीं करना चाहते या नहीं कर सकते।) समस्या उनके उल्टे परदे के पीछे / लोड बैलेंसर्स के साथ हो सकती है।
अब तक मैंने pcurl के एक संशोधित संस्करण का उपयोग किया: https://github.com/brunoborges/pcurl
मैंने इस लाइन को बदल दिया:
curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
इसके लिए:
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} &
मुझे जोड़ना पड़ा --speed-limit 2048 --speed-time 10
क्योंकि कनेक्शन केवल मिनटों के लिए लटका रहता है जब यह विफल हो जाता है।
लेकिन हाल ही में यह स्क्रिप्ट भी पूरी नहीं हो सकी है।
एक समस्या यह है कि यह -C -
भाग को नजरअंदाज करता है, इसलिए यह पुन: प्रयास के बाद खंड को "जारी" नहीं रखता है। यह संबंधित अस्थायी फ़ाइल को छोटा करने के लिए लगता है, और प्रत्येक असफल होने के बाद शुरुआत से शुरू होता है। (मुझे लगता है कि --range
और -C
विकल्पों का एक साथ उपयोग नहीं किया जा सकता है।)
दूसरी समस्या यह है कि यह स्क्रिप्ट एक ही समय में सभी खंडों को डाउनलोड करती है। इसमें 300 सेगमेंट नहीं हो सकते हैं, जिनमें से केवल एक बार में 10 डाउनलोड किए जा रहे हैं।
मैं इस विशिष्ट उद्देश्य के लिए C # में एक डाउनलोड टूल लिखने के बारे में सोच रहा था, लेकिन अगर कोई मौजूदा टूल है, या यदि कर्ल कमांड विभिन्न मापदंडों के साथ ठीक से काम कर सकता है, तो मैं कुछ समय बचा सकता हूं।
अद्यतन 1: अतिरिक्त जानकारी: समानांतर डाउनलोड की कार्यक्षमता को हटाया नहीं जाना चाहिए, क्योंकि उनके पास एक बैंडविड्थ सीमा (80-120 Kbytes / sec, ज्यादातर 80) प्रति कनेक्शन है, इसलिए 10 कनेक्शन 10 गुना स्पीडअप का कारण बन सकते हैं। मुझे फ़ाइल डाउनलोड 1 घंटे में समाप्त करना है, क्योंकि फ़ाइल प्रति घंटा उत्पन्न होती है।
rsync
(जो आपको स्थानांतरण को फिर से शुरू करने देगा)lftp
भी प्रसारण को स्वचालित रूप से पुनः आरंभ करने की अनुमति देता है।