पूरी FTP निर्देशिकाओं को पुन: डाउनलोड करने के लिए wget का उपयोग करना


93

मैं एक होस्ट से दूसरे में सभी फ़ाइलों और फ़ोल्डरों को कॉपी करना चाहता हूं। पुराने होस्ट की फाइलें / var / www / html पर बैठती हैं और मेरे पास केवल उस सर्वर तक एफ़टीपी पहुंच है, और मैं सभी फाइलों को टैर नहीं कर सकता। एफ़टीपी के माध्यम से पुराने होस्ट से नियमित संबंध मुझे / घर / व्यवस्थापक फ़ोल्डर में लाता है।

मैंने अपना नया सर्वर निम्नलिखित कमांड फॉर्म चलाने की कोशिश की:

wget -r ftp://username:password@ip.of.old.host

लेकिन मुझे जो भी मिल रहा है वह एक बना हुआ इंडेक्स.बुक फाइल है।

FTP पर पुनरावर्ती उपयोग करने के लिए सही वाक्यविन्यास क्या है?


2
ध्यान दें कि, डिफ़ॉल्ट रूप से, wget -r की अधिकतम पुनरावृत्ति गहराई 5 है; यदि आपके पास एक गहरी उपनिर्देशिका है, तो उन्हें अनदेखा कर दिया जाएगा, जब तक कि आप इसे नहीं बदलते (मैन पेज में देखें)।
mikewaters

जवाबों:


125

प्रयास करें -mके लिए--mirror

wget -m ftp://username:password@ip.of.old.host

15
सुरक्षा कारणों से, --ask-passwordपासवर्ड का उपयोग करने से बचने के लिए इसका उपयोग करना अच्छा होगा history
चेकसम

यह बहुत अच्छा है। एक आकर्षण की तरह काम किया ..
संभ शर्मा

यह स्वीकृत उत्तर (बेहतर दृश्यता के लिए) होना चाहिए।
bgondy

इसमें डाउनलोड करने के लिए निर्देशिका का पथ शामिल नहीं है, मुझे लगता है कि @Formoda उत्तर बेहतर है
वसीम ए।

@WasimA।, आप यहां केवल निर्देशिका पथ जोड़ सकते हैं:wget -m ftp://username:password@ip.of.old.host/mydir/
एलेक्स चे

37

आपके पास यह सही है, आपको अंत में एक अनुगामी * की आवश्यकता है:

wget -r ftp://username:password@1.2.3.4/dir/*

साझा सर्वर के लिए, आप इस तरह का उपयोग कर सकते हैं:

wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password

क्योंकि अधिकांश साझा किए गए सर्वर में ftp-username कुछ होता है जैसे यूजरनेम @ hostname, इसलिए, पहला wget कमांड काम नहीं करता है, और दूसरा कमांड ठीक काम करता है।


1
यह केवल एक डाइरेक्टरी को गहराई तक ले जाएगा। -मीटर फ्लैग का उपयोग करने के लिए बेहतर
बनाएं

कुछ मामलों में दूसरी कमांड स्पेस के कारण काम नहीं कर रही है, आप इस तरह शेयर होस्टिंग के लिए पहली कमांड का उपयोग कर सकते हैं। ** wget -r ftp: / / उपयोगकर्ता नाम% 40host: पासवर्ड @ होस्ट / dir / **
वसीम ए।

नोट: आपको -mया तो उपयोग करना चाहिए या -r -l infक्योंकि -r की डिफ़ॉल्ट पुनरावृत्ति गहराई है 5. gnu.org/software/wget/manual/…
ndemou

7

Wget के अलावा, आप स्क्रिप्ट मोड में lftp का उपयोग भी कर सकते हैं । निम्नलिखित कमांड दी गई स्थानीय एफ़टीपी निर्देशिका की सामग्री को दी गई स्थानीय डायरेक्टरी में मिरर करेगी और इसे क्रोन जॉब में डाला जा सकता है:

lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'

यह स्वचालित रूप से निर्देशिकाओं में पुनरावृत्ति को संभालता है और डेटा को डाउनलोड करने के लिए दूरस्थ स्रोत से निर्देशिका को निर्दिष्ट करने की अनुमति देता है।


5

आप 'curlftpfs - एक ftp होस्ट को स्थानीय निर्देशिका के रूप में माउंट कर सकते हैं' और, एक बार माउंट होने पर, आप 'cp -r' जैसे सामान्य फ़ाइल टूल का उपयोग कर सकते हैं।


curlftpfsजब तक आप डाउनग्रेड नहीं करते हैं, तब तक प्रमुख प्रदर्शन की समस्याएं हैंlibcurl3-gnutls
हेंगजी

5

FTP से डेटा डाउनलोड करने के लिए नीचे दिए गए wget कमांड की जाँच करें।

wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"

-r: पुनरावर्ती डाउनलोड के लिए है।

-np: कोई अभिभावक आरोही के लिए नहीं है।

-nH: निर्देशिका का निर्माण अक्षम करने के लिए है जिसका नाम URL यानी abc.xyz.com है

--cut-dirs: माता-पिता की निर्देशिका की संख्या की अनदेखी के लिए है। इस विकल्प का मूल्य आपकी कमांड के लिए अलग होगा।

आप उपरोक्त कमांड को निष्पादित करके देख सकते हैं।



2

काम करने की कोशिश करनी चाहिए:

wget -r ftp://ftp:ftp@ftp.sunet.se/tst/

2

उपयोग:

wget -m ftp://192.168.0.1

और यह सभी फाइलों और फ़ोल्डरों को मिरर करेगा।


जैसा कि मैंने कहा, एफ़टीपी के माध्यम से लॉगिंग मुझे / घर / व्यवस्थापक फ़ोल्डर में ले जाती है, और मुझे जिन फ़ाइलों की आवश्यकता होती है, वे / var / www / html में हैं, इसलिए जब मैं आपके द्वारा सुझाए गए आदेश को चलाता हूं, तो मुझे केवल / होम / व्यवस्थापक की सामग्री मिलती है मैंने इसे 192.168.0.1/var/www/html के साथ चलाने की कोशिश की , लेकिन फिर यह CWD / होम / एडमिन / var / www / html को आज़माता है। मैं इसे इस फ़ोल्डर में रूट से कैसे बनाऊँ?

मुझे इस विशेष समस्या का कोई अनुभव नहीं है, लेकिन आप अपने घर के नीचे / var / www / html के लिए एक सिमलिंक बनाने की कोशिश कर सकते हैं। फिर आप 192.168.0.1/html
prestomation

मैंने एक सिमलिंक बनाने की कोशिश की, लेकिन इसका परिणाम यह हुआ कि मेरे स्थानीय पर इसी तरह का सिमलिंक बना।

1

यह सही वाक्यविन्यास है। सुनिश्चित नहीं हैं कि आपको अपेक्षित परिणाम क्यों नहीं मिल रहे हैं।

जैसा कि कभी-कभी एक से अधिक तरीके से किया जाता है। Ncftp की कोशिश करें, विशेष रूप से ncftpget में


मैं अपने नए सर्वर पर अधिक सॉफ़्टवेयर स्थापित नहीं कर सकता। क्या मुझे / var / www / html से सभी फाइलों को डाउनलोड करने के लिए wget नहीं होना चाहिए? मैंने wr -r उपयोगकर्ता नाम की कोशिश की : password@ip.of.old.host/var/www/html लेकिन मुझे एक निर्देशिका मिली जिसमें त्रुटि नहीं मिली।

1

मैं समझ सकता हूं कि क्या आप इसे क्रोन या कुछ और में डंप करने की कोशिश कर रहे हैं, लेकिन अपने सामान्य ग्राहक और एमजीटी के साथ सर्वर में एफटीपी क्यों नहीं? यह सफलता का एक तेज रास्ता हो सकता है।


मैंने mget * की कोशिश की, लेकिन यह उप-फ़ोल्डरों के साथ काम नहीं किया, यह कहते हुए कि स्थानीय उप-फ़ोल्डर मौजूद नहीं है। क्या उसे स्वचालित रूप से स्थानीय फ़ोल्डर बनाने का एक तरीका है?

आपके क्लाइंट के आधार पर, -r स्विच आमतौर पर ट्रिक करता है। IE: mget -r *
dr.pooter

mmm। Linux में AFAIK मानक ftp क्लाइंट को निर्देशिकाओं को पुन: प्राप्त करने के लिए डिज़ाइन नहीं किया गया है। मेरा मतलब है - कोई विकल्प नहीं है। ncftp या lftp जैसे अन्य क्लाइंट पुनरावर्ती पुनर्प्राप्ति का समर्थन करते हैं, लेकिन वे आमतौर पर डिफ़ॉल्ट रूप से उपलब्ध नहीं होते हैं।
स्टैन

1

जैसा कि मैंने कहा, एफ़टीपी के माध्यम से लॉगिंग मुझे / घर / व्यवस्थापक फ़ोल्डर में ले जाती है, और मुझे जिन फ़ाइलों की आवश्यकता होती है, वे / var / www / html में हैं

मुझे लगता है कि यह आपके मामले में काम करेगा:

wget -r ftp://192.168.0.1/../../var/www/html

0

मैं विंडोज के साथ उपयोगकर्ता नाम के साथ ब्रिंकस्टर / उपयोगकर्ता नाम की मेजबानी में आया था, इसलिए यदि आप सिंटैक्स का उपयोग करते हैं तो विकट एक त्रुटि फेंक देगा:

wget -m ftp://brinkster/username:password@ip.of.the.host

इस अतीत को पाने के लिए, का उपयोग करें

wget -m ftp://brinkster%2Fusername:password@ip.of.old.host

मुझे विंडोज होस्टिंग @ ब्रिंकस्टर के साथ इसका सामना करना पड़ा।


-3

wget --user username --password yourpassword ftp://example.com/ftpfiles/filename काम करेगा या आप फ़ाइल नाम बदलने के बजाय * जोड़ सकते हैं: Wget को पोर्ट के बारे में सोचता है जो आपके मामले में अमान्य है।


एक चार साल पुराने सवाल के साथ कई उत्कीर्ण जवाब कुछ भी नया नहीं देते हैं और यहां तक ​​कि एक पुनरावर्ती प्रतिलिपि के लिए आवश्यकता को छोड़ देते हैं।
स्वेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.