Wget के साथ कनेक्शन कैसे पुनर्प्राप्त करें?


29

मेरे पास बहुत अस्थिर इंटरनेट कनेक्शन है, और कभी-कभी 200 एमबी की बड़ी फ़ाइलों को डाउनलोड करना पड़ता है।

समस्या यह है कि गति बार-बार गिरती है और बैठती है --, -K/sऔर प्रक्रिया जीवित रहती है। मैंने सोचा था कि प्रक्रिया के लिए कुछ KILL सिग्नल भेजे जाएं, लेकिन जैसा कि मैंने संकेतों के बारे में wget मैनुअल में पढ़ा है यह मदद नहीं करता है।

मैं wgetअपने आप को फिर से संगठित करने और इसे डाउनलोड करने के लिए कैसे मजबूर कर सकता हूं जहां यह कनेक्शन ड्रॉप होने के बाद बंद हो गया और फिर से वापस आ गया?

मैं wgetदौड़ना छोड़ना चाहूंगा , और जब मैं वापस आऊंगा, तो मैं इसे डाउनलोड करते हुए देखना चाहता हूं, और गति के साथ इंतजार नहीं करना चाहिए --,-K/s

जवाबों:


47

ताकि --, -K/sआप उपयोग की जा सकने वाली स्थितियों से बच सकें --read-timeout=seconds। यह सेकंड की मात्रा के बाद कनेक्शन टाइमआउट करेगा।

यदि आपको इससे आगे जाने की आवश्यकता है तो आप इस सेटअप का उपयोग कर सकते हैं

wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0

यह इनकार किए गए कनेक्शन और इसी तरह की घातक त्रुटियों ( --retry-connrefused) को पुनः प्रयास करेगा , यह अगली बार पुन: प्रयास करने से पहले 1 सेकंड प्रतीक्षा करेगा ( --waitretry), यह अधिकतम 20 सेकंड प्रतीक्षा करेगा यदि कोई डेटा प्राप्त नहीं होता है और फिर पुन: प्रयास करें ( --read-timeout), यह अधिकतम 15 सेकंड प्रतीक्षा करेगा प्रारंभिक कनेक्शन समय से पहले ( --timeout) और अंत में यह अनंत बार ( -t 0) को पुनः प्रयास करेगा ।

आप whileस्थानीय नेटवर्क विफलता और समान से बचने के लिए भी इसे लूप में रखना चाह सकते हैं । इस मामले में भी आपको --continueडाउनलोड जारी रखने के लिए जोड़ना होगा जहां आपने छोड़ा था। निम्नलिखित बैश में अच्छी तरह से काम करता है

while [ 1 ]; do
    wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 --continue
    if [ $? = 0 ]; then break; fi; # check return value, break if successful (0)
    sleep 1s;
done;

बोनस टिप के रूप में आप --no-dns-cacheहोस्ट द्वारा DNS के कई सर्वरों के बीच आपके अनुरोध को संतुलित करने के मामले में भी उपयोग कर सकते हैं ।

डिस्क्लेमर: मैं इसका उपयोग करने की सलाह नहीं देता क्योंकि यह होस्ट को अनचाहे होने की स्थिति में स्पैम को भेज देगा और इसे अनइंस्टॉल करने के लिए इसे छोड़ना नासमझी की तरह है। हालाँकि, यदि आप वास्तव में कुछ डाउनलोड करना चाहते हैं, तो आपका कनेक्शन पर्याप्त रूप से काम नहीं करता है।


2
डिफ़ॉल्ट रूप से --read-timeout=900। आप सिर्फ 15 मिनट प्रतीक्षा कर सकते हैं और wget डाउनलोडिंग को पुनः आरंभ करेगा।
बोरिस

इस "रिट्री" मदद के लिए धन्यवाद, लेकिन मेरे लिए यह अभी भी 100% काम नहीं करता है, क्योंकि wget के साथ समाप्त होता है: SSL कनेक्शन स्थापित करने में असमर्थ। यह उस त्रुटि पर पीछे हटता नहीं है। पुनरुत्पादन के लिए pkg.jenkins.io/debian/jenkins.io.key
Juraj Michalak

20

--tries=number

यह विकल्प संख्या के लिए रिट्रीट की संख्या निर्धारित करता है। निर्दिष्ट करें 0 या 'अनंत' के लिए अनंत पुनः प्रयास करें।

wget --tries=70 http://example.com/myfile.zip करना चाहिए।

डिफ़ॉल्ट 20 बार रिट्रीट करने के लिए है, "कनेक्शन मना कर दिया" या "नहीं मिला" (404) जैसी घातक त्रुटियों के अपवाद के साथ , जो पीछे हटने वाले नहीं हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.