2013-11-01 7 views
11

मैं लिनक्स में curl के साथ काम कर रहा हूं। मैं ftp सर्वर में फ़ाइल का एक हिस्सा डाउनलोड कर रहा हूं (-r विकल्प का उपयोग कर), लेकिन मेरा कनेक्शन अच्छा नहीं है, यह हमेशा बाधा डालता है। मैं एक स्क्रिप्ट लिखना चाहता हूं जो फिर से कनेक्ट होने पर डाउनलोड फिर से शुरू हो।कर्ल में स्वचालित रूप से बाधित डाउनलोड को फिर से शुरू कैसे करें?

मैं इस आदेश का उपयोग किया है, लेकिन यह काम नहीं कर रहा:

until curl -r 666-9999 -C - --retry 999 -o "path/to/file" "ftp:/path/to/remote/file"; do :; done 

उत्तर

8

wget उपयोग के इस मामले विशेष रूप से बनाया गया है। मैन पेज से:

Wget has been designed for robustness over slow or unstable network connections; 
if a download fails due to a network problem, it will keep retrying until the 
whole file has been retrieved. If the server supports regetting, it will 
instruct the server to continue the download from where it left off. 

wget लगभग सभी लिनक्स वितरणों के लिए उपलब्ध है - यह शायद आपके पहले से ही इंस्टॉल हो चुका है। फ़ाइल को डाउनलोड करने के लिए बस wget का उपयोग करें, यह तब तक नेटवर्क कनेक्शन को फिर से स्थापित करेगा जब तक फ़ाइल पूरी तरह से स्थानांतरित नहीं हो जाती।

+0

क्या wget फ़ाइल की आंशिक डाउनलोड का समर्थन करता है (जैसे curl में -r विकल्प)? –

+2

मैनपेज के अनुसार यह फ़ाइल के केवल हिस्से को डाउनलोड करने का समर्थन नहीं करता है, लेकिन '-c' ध्वज एक डाउनलोड जारी रखने की अनुमति देता है। –

+0

जहां तक ​​मुझे पता है कि यह नहीं है, यह केवल आंशिक रूप से डाउनलोड की गई फ़ाइल को फिर से शुरू करने का समर्थन करता है क्योंकि वेन ने कहा था। आपको इसकी आवश्यकता क्यों होगी? wget पूरी फ़ाइल को डाउनलोड करने का ख्याल रखेगा (और केवल वे हिस्सों जिन्हें आपने पहले से डाउनलोड नहीं किया है)। – sjaensch

4

आप थोड़ी देर के पाश में बाहर निकलने के कोड की जाँच करें और जब तक बाहर निकलने के कोड इंगित करता है कि डाउनलोड सफल रहा है फिर से शुरू कर सकते हैं:

export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "http://www.example.com/a-big-archive.zip"; export ec=$?; done 

उदाहरण यह डाउनलोड करेगा http://ilovesymposia.com/2013/04/11/automatically-resume-interrupted-downloads-in-osx-with-curl/

1
curl -L -O your_url 

से लिया जाता है फ़ाइल।

अब मान लें कि आपका कनेक्शन बाधित है;

curl -L -O -C - your_url 

यह आखिरी बाइट से डाउनलोड करने के लिए जारी रहेगा

डाउनलोड किया मैनपेज से:

उपयोग "-सी -" स्वचालित रूप से जहां पता लगाने के लिए कर्ल बताने के लिए/कैसे हस्तांतरण फिर से शुरू करने । इसके बाद यह पता लगाने के लिए दिए गए आउटपुट/इनपुट फ़ाइलों का उपयोग करता है।

संबंधित मुद्दे