CURL का उपयोग करके एफ़टीपी से फ़ाइल डाउनलोड करना


20

मैं अपने कंप्यूटर पर किसी एफ़टीपी सर्वर से एक स्थानीय ड्राइव पर एक फ़ाइल डाउनलोड करने के लिए एक cURL कमांड का उपयोग करने की कोशिश कर रहा हूं। मैंने कोशिश की

कर्ल " ftp: // myftpsite " --user नाम: पासवर्ड -Q "CWD / उपयोगकर्ताओं / myfolder /" -O "myfile.raw"

लेकिन यह एक त्रुटि देता है जो कहता है:

कर्ल: दूरस्थ फ़ाइल नाम की कोई लंबाई नहीं है!
कर्ल: अधिक जानकारी के लिए 'कर्ल - हेल्प' या 'कर्ल - मैनुअल' ट्राई करें
: (6) मेजबान को हल नहीं कर सका: myfile.raw; अनुरोधित प्रकार का कोई डेटा रिकॉर्ड नहीं

मैंने कुछ अन्य तरीकों की कोशिश की है, लेकिन कुछ भी काम नहीं करता है।

इसके अलावा, मुझे पूरा यकीन नहीं है कि मैं यह निर्दिष्ट करना चाहता हूं कि मुझे कौन सा फ़ोल्डर डाउनलोड करना है। मुझे यह कैसे करना है?

जवाबों:


27

प्रयत्न

curl -u user:password 'ftp://mysite/%2fusers/myfolder/myfile/raw' -o ~/Downloads/myfile.raw

एफ़टीपी यूआरएल में, पथ प्रारंभिक निर्देशिका (आमतौर पर आपके होमडिर) के सापेक्ष है। आपको एक पूर्ण पथ निर्दिष्ट करने की आवश्यकता है, और इसका मतलब %2fनिर्दिष्ट करने के लिए उपयोग करना है /। इसकी आवश्यकता है क्योंकि ftp:URL में पथ को स्लेश-पृथक नामों की सूची के रूप में माना जाता है , जिनमें से प्रत्येक को एक अलग CWDकमांड को दिया जाना चाहिए । %2fडीकोड के बाद बंटवारे। RFC 1738 और FTP URL देखें ।

आउटपुट लोकेशन के लिए, बस एक रास्ता दीजिए -o


सुरक्षा सुझाव:

  • अपना पासवर्ड URL में न डालें। इसे स्टोर करना ~/.netrcविशेष रूप से सुरक्षित नहीं है, लेकिन यह कम से कम छिपा हुआ है ps -ef

  • आपका पासवर्ड स्पष्ट पाठ में भेजा गया है। यदि सर्वर इसका समर्थन करता है, तो उपयोग करें curl --ssl-reqdयाcurl ftps://mysite/...

  • SFTP (SSH फ़ाइल ट्रांसफर प्रोटोकॉल) का उपयोग करना और भी बेहतर होगा।


बढ़िया काम किया। बिल्कुल निश्चित नहीं है कि मैं पूरी तरह से समझता हूं कि% 2f का उपयोग कैसे किया जाता है, जैसा कि आप भी उपयोग कर रहे हैं /, लेकिन हे यह काम करता है, इसलिए मैं शिकायत करने वाला हूं। सहायता के लिए धन्यवाद!
योशिय्याह

1
@ जोशिया: ऐसा लगता है कि URL "पथ" से विभाजित है /, और प्रत्येक तर्क एक CWDकमांड के साथ भेजा गया है : %2fusers/myfolderas CWD /users,, CWD myfolder। इस विषय पर RFC 1738 देखें ।
1916 बजे user1686

2
curl -T /users/myfolder/myfile.raw -u username:password "ftp://myftpsite/path/myfile.raw"

यह मेरे लिए हर समय उपयोगी है। यह एक सम्मोहन की तरह काम करता है।


1
क्या मैं इस उत्तर को नोटिस करने वाला पहला व्यक्ति गलत हूं? -T पैरामीटर का अर्थ है "फ़ाइल अपलोड", जबकि ओपी ने "फ़ाइल डाउनलोड" के लिए कहा
Kar.ma

0

प्रयत्न:

curl "ftp://user:password@myftpsite/users/myfolder/myfile.raw"

(यदि दूरस्थ फ़ाइल का नाम 'myfile.raw' है)


जब मैं कोशिश करता हूं, तो मुझे निम्नलिखित त्रुटि मिलती है: "कर्ल: (9) सर्वर ने आपको दी गई निर्देशिका में बदलने से इनकार कर दिया"। मेरा मानना ​​है कि यह क्यों मैं -Q "CWD" कमांड का उपयोग करने की आवश्यकता थी।

0

जैसा कि यान का सुझाव है,

कर्ल " ftp: // उपयोगकर्ता: password@myftpsite/users/myfolder/myfile.raw "

काम करना चाहिए, लेकिन कुछ एफ़टीपी सर्वर सुरक्षा नीतियों का उपयोग करते हैं जो मानकों के अनुरूप नहीं हैं। उन मामलों में, --ftp-method singlecwdया --ftp-method nocwdविकल्प मदद कर सकता है।

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