कमांड लाइन से दूरस्थ फ़ाइलों को डाउनलोड करने के लिए curl का उपयोग करना

शक्तिशाली कर्ल कमांड लाइन उपकरण का उपयोग किसी भी दूरस्थ सर्वर से फ़ाइलों को डाउनलोड करने के लिए किया जा सकता है। लॉन्गटाइम कमांड लाइन उपयोगकर्ता जानते हैं कि यह विभिन्न प्रकार की परिस्थितियों के लिए उपयोगी हो सकता है, लेकिन चीजों को सरल रखने के लिए, कई लोग पाएंगे कि कर्ल के साथ फ़ाइल डाउनलोड करना अक्सर एक वेब ब्राउज़र या एफ़टीपी क्लाइंट का उपयोग करने के लिए एक त्वरित विकल्प हो सकता है जो जीयूआई पक्ष से ओएस एक्स (या लिनक्स)। यह स्थानीय स्थितियों के लिए सहायक है, लेकिन यदि आप ऐसी स्थिति में हैं जहां आपको एसएसएच के माध्यम से कनेक्ट होने पर रिमोट मैक में कुछ डाउनलोड करने की आवश्यकता है तो विशेष मूल्य है।

इस walkthrough के प्रयोजनों के लिए, हम मुख्य रूप से दो आम तौर पर सामना किए गए HTTP और एसएफटीपी प्रोटोकॉल से फ़ाइलों को डाउनलोड करने पर ध्यान केंद्रित करेंगे, हालांकि यह ध्यान दिया जाना चाहिए कि curl कई और प्रोटोकॉल का समर्थन करता है। हालांकि कर्ल का उपयोग करना आसान है, कमांड लाइन के कुछ ज्ञान की सिफारिश की जाती है।

कर्ल-ओ के साथ सटीक मिलान फ़ाइलें डाउनलोड करें

कर्ल के साथ अपरकेस-ओ ध्वज का उपयोग सटीक फ़ाइल नाम को बनाए रखते हुए दूरस्थ सर्वर से फ़ाइल डाउनलोड करता है, इसके लिए मूल वाक्यविन्यास निम्न है:

curl -O [url]

इसका अर्थ यह है कि निर्दिष्ट URL फ़ाइल को "sample.zip" नाम दिया गया है, यह फ़ाइल नाम "sample.zip" के साथ डाउनलोड होगा, और अगर फ़ाइल को "LongExampleFileNameForOSXDaily-v-1-3-51-revision- 515b12-readme.txt "रिमोट सर्वर पर, यह स्थानीय मशीन पर उस सटीक नाम से बचाएगा। लंबे फ़ाइल नामों को अक्सर -ओ ध्वज के बजाय -ओ ध्वज के साथ बेहतर तरीके से संभाला जाता है, जिसे हम जल्द ही संबोधित करेंगे।

नियमित पाठकों को याद हो सकता है कि m3u स्ट्रीमिंग फ़ाइल से वास्तविक ऑडियो सामग्री को निकालने का तरीका बताते समय हमने कर्ल-ओ कमांड का उपयोग किया था।

कर्ल के साथ किसी भी डाउनलोड की शुरूआत से पता चला है कि प्रतिशत स्थानांतरित हो गया है, डाउनलोड करने में समय और शेष समय, और स्थानांतरण की गति।

स्क्रीनशॉट नीचे चिपकाए गए उदाहरण की तुलना में बेहतर प्रतिनिधित्व प्रदान करता है, लेकिन ऐसा कुछ ऐसा दिखता है:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

स्थानांतरण गति के साथ आप कर्ल के आउटपुट को / dev / null पर रीडायरेक्ट कर सकते हैं और इंटरनेट कनेक्शन की गति का परीक्षण करने के लिए इसका उपयोग कर सकते हैं, लेकिन wget कमांड को ट्रांसफर बार को पढ़ने और उसका पालन करना आसान होता है, इस प्रकार wget उस कार्य के लिए बेहतर अनुकूल है।

Curl -o के साथ एक अलग नाम के साथ एक दूरस्थ फ़ाइल को सहेजना

लोअरकेस-फ्लैग का उपयोग करने से आप डाउनलोड की गई फाइल के लिए एक अलग फ़ाइल नाम निर्दिष्ट कर सकते हैं कि इसे रिमोट सर्वर पर कैसे नाम दिया गया है। यह लंबे समय तक फ़ाइल नामों को कम करने या बस कुछ लेबल करने में मददगार हो सकता है ताकि आपके लिए यह खोजना आसान हो। सामान्य वाक्यविन्यास होगा:

curl -o [shortname] [url]

उदाहरण के लिए, यदि आप एक आईओएस आईपीएसडब्लू फाइल को सहेजना चाहते हैं जिसे आपने लंबे पूर्ण नाम के बिना ऐप्पल सर्वर पर सूचीबद्ध पाया है, तो आप निम्न का उपयोग कर सकते हैं:

curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw

यह "iPhone5, 3_7.0.4_11B554a_Restore.ipsw" फ़ाइल डाउनलोड करेगा लेकिन अधिक अर्थपूर्ण "iPhone5C-704.ipsw" के रूप में छोटा नाम दिया जाएगा।

यदि आप फ़ाइल को वर्तमान कार्यशील निर्देशिका में सहेजना नहीं चाहते हैं, तो फ़ाइल नाम के हिस्से के रूप में पथ निर्दिष्ट करें:

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

कर्ल के साथ समवर्ती रूप से एकाधिक फ़ाइलों को डाउनलोड करना

curl एक ही समय में कई फ़ाइलों को आसानी से डाउनलोड कर सकता है, आपको केवल एक से अधिक यूआरएल निर्दिष्ट करना है:

curl -O [URL 1] [URL 2] [URL 3]

विभिन्न नामों वाली फ़ाइलों के लिए, या विभिन्न सर्वरों पर होस्ट किए गए, या विभिन्न निर्देशिका पथों के भीतर, संपूर्ण यूआरएल का उपयोग करें, उदाहरण के लिए:

curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt

दूसरी तरफ, यदि फ़ाइल नाम डाउनलोड किए जाने के लिए वृद्धिशील नामकरण का उपयोग कर रहे हैं, तो आप डाउनलोड सीमा निर्दिष्ट करने के लिए ब्रैकेट का उपयोग कर सकते हैं, जैसे:

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1[1-3].txt

यह प्रत्येक अद्वितीय यूआरएल निर्दिष्ट किए बिना फ़ाइलों को fdl-1.1.txt, fd1-1.2.txt, और fd1-1.3.txt फ़ाइलों को एक ही समय में ले जाएगा। बेशक यह केवल तभी काम करता है जब फाइल एक ही निर्देशिका में एक ही डोमेन में हों और उसी डोमेन पर हों।

कर्ल के साथ प्रमाणीकरण

आप -u ध्वज का उपयोग करके curl के साथ प्रमाणीकरण भी पास कर सकते हैं:

curl -u user:pass -O ftp://remote_url/file-to-download.zip

ध्यान रखें कि बैश इतिहास उपयोगकर्ता नाम और पासवर्ड निर्दिष्ट के साथ -u का उपयोग करते समय सादा पाठ में पासवर्ड संग्रहीत करेगा, इस प्रकार अधिकांश स्थितियों के लिए यह अनुशंसित नहीं है। आप 'कर्ल' के सामने एक जगह रख कर उस के आसपास हो सकते हैं। यदि आप कमांड को उपसर्ग करने के लिए स्पेसबार का उपयोग नहीं करते हैं, तो आप संभवतः सुरक्षित होने के लिए कमांड इतिहास को खाली करना चाहते हैं।

समर्थित प्रोटोकॉल और उपयोग HTTP और एफ़टीपी से परे

जैसा कि पहले उल्लेख किया गया है, curl उपयोग HTTP और FTP से बहुत दूर है, क्योंकि कर्ल मैन्युअल पृष्ठ प्रविष्टि विवरण में अतिरिक्त प्रोटोकॉल का उल्लेख करती है:

कर्ल एक का उपयोग कर डेटा से या सर्वर में स्थानांतरित करने के लिए एक उपकरण है
समर्थित प्रोटोकॉल (डीआईसीटी, फ़ाइल, एफ़टीपी, एफटीपीएस, गोफर, HTTP, एचटीटीपीएस, आईएमएपी,
आईएमएपीएस, एलडीएपी, एलडीएपीएस, पीओपी 3, पीओपी 3 एस, आरटीएमपी, आरटीएसपी, एससीपी, एसएफटीपी, एसएमटीपी, एसएमटीपीएस,
टेलनेट और टीएफटीपी)।

इसके अतिरिक्त, आप पाएंगे कि कर्ल का उपयोग PUT और POST अनुरोधों, कुकीज़, प्रॉक्सी, सुरंगों, डाउनलोड फिर से शुरू करने और यहां तक ​​कि एक समर्पित वेब का उपयोग किए बिना HTTP शीर्षलेख जानकारी को पकड़ने या उपयोगकर्ता एजेंट (प्रभावी ढंग से स्पूफिंग) को बदलने के लिए भी किया जा सकता है। ब्राउज़र।

अधिकांश कमांड लाइन यूटिलिटीज की तरह, आप 'मैन कर्ल' कमांड के साथ उचित मैन पेज को बुलाकर कर्ल के बारे में बहुत कुछ सीख सकते हैं।