2011-05-13 7 views
6

में एफ़टीपी के माध्यम से सभी फ़ाइलों की प्रतिलिपि कैसे करें मेरे पास कुछ होस्ट के साथ ऑनलाइन खाता है जो मुझे यूजरनेम और पासवर्ड के साथ एफ़टीपी खाता देता है।आरएसआईएनसी

मेरे पास कॉपनी के साथ एक और है जिसने मुझे एफ़टीपी और आरएसआईएनसी दिया।

अब मैं अपनी सभी फ़ाइलों को पुरानी एफ़टीपी से नए एफ़टीपी में rync के साथ स्थानांतरित करना चाहता हूं।

अब यह संभव rsync के माध्यम से यह करने के लिए केवल क्योंकि मैं पहले कंप्यूटर पर प्रतिलिपि बनाने के लिए और उसके बाद फिर से अपलोड

+0

आप एक या दोनों सेनाओं पर गोले है? – sarnold

+0

मेरे पास अन्य होस्ट – Mahakaal

उत्तर

13

केवल एफ़टीपी src साथ मशीन फोन की सुविधा देता है नहीं करना चाहती है।

एफ़टीपी और एसएसएच dst के साथ मशीन को कॉल करने दें। कि कमांड लाइन पर --ftp-password साथ wget चल

ssh dst 
cd destination-direction 
wget --mirror --ftp-user=username --ftp-password=password\ 
    --no-host-directories ftp://src/pathname/ 

नोट सिस्टम पर किसी और के लिए पासवर्ड दूर दे देंगे। (साथ ही स्पष्ट में तार पर यह स्थानांतरित, लेकिन आप उस जानता था।)

आप wget लिए पहुँच नहीं है, तो वे ncftp या lftp या ftp स्थापित हो सकता है। मुझे बस wget सबसे अच्छा पता है।

ftp src 
user username 
pass password 
bin 
cd /pathname 
ls 

इस बिंदु पर, दूरस्थ सिस्टम पर सभी निर्देशिकाओं पर ध्यान दें: :)

संपादितftp का उपयोग करने के लिए, आप की तरह अधिक कुछ करने की आवश्यकता होगी। प्रत्येक को !mkdir के साथ बनाएं। फिर स्थानीय रूप से और दूरस्थ रूप से निर्देशिका में बदलें:

lcd <dirname> 
cd <dirname> 
ls 

सभी निर्देशिकाओं के लिए दोहराएं। सभी फाइलें प्राप्त करने के लिए mget * का उपयोग करें।

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

या यदि आप src पर एक खोल प्राप्त कर सकते हैं, तो इससे भी बहुत मदद मिलेगी। एफ़टीपी सिर्फ हजारों फाइलों को स्थानांतरित करने के लिए नहीं है।

वैसे भी, यह आपके स्थानीय सिस्टम के माध्यम से उछाल से बचाता है, जो महत्वपूर्ण रूप से थ्रूपुट की सहायता करना चाहिए।

+0

पर एक मेजबान और एफ़टीपी, एसएफटीपी, आरएसआईएनसी, एससीपी, एसएसएच पर केवल ftp है, मेरे पास wget नहीं है लेकिन ftp है, ftp – Mahakaal

+0

के साथ अपना कमांड कैसे बदलें, मेरे पास इंटरनेट पर एक और लिनक्स होस्ट है, मुझे लगता है मुझे पहले वहां सभी फाइलों को wget की आवश्यकता है और फिर वहां से – Mahakaal

+0

गंतव्य पर rsync का उपयोग करें ओह हाँ, यह बहुत बेहतर लगता है। :) आप इंटरमीडिएट सिस्टम पर फ़ाइलों को 'tar' भी कर सकते हैं, मानते हैं कि आपके पास ड्राइव स्पेस है, और बस मध्य-मैन होस्ट के बीच _single_ फ़ाइल को स्थानांतरित करें। वह बहुत से 'rsync' को हरा देगा। :) – sarnold

4

हमेशा भरोसेमंद FUSE फाइल सिस्टम, CurlFtpFS और SSHFS है। उचित सर्वर सिस्टम के साथ प्रत्येक सर्वर को माउंट करें और मानक उपयोगिताओं का उपयोग करके प्रतिलिपि बनाएँ। शायद ऐसा करने का सबसे तेज़ तरीका नहीं है, लेकिन संभवतः कम से कम श्रम-केंद्रित।

1

मैं एक दूरस्थ फ़ोल्डर को स्थानीय फ़ोल्डर में एफ़टीपी के माध्यम से सिंक करने के लिए एक सरल समाधान की तलाश में था, जबकि केवल नई फाइलों को बदल रहा था।मैं, sarnold के answer कि मैंने सोचा था कि दूसरों के लिए उपयोगी भी हो सकता है के आधार पर एक छोटे से wget स्क्रिप्ट के साथ अटक गया तो यहाँ यह है:

#!/bin/bash  
HOST="1.2.3.4" 
USER="username" 
PASS="password" 
LDIR="/path/to/local/dir" # can be empty 
RDIR="/path/to/remote/dir" # can be empty 

cd $LDIR && \    # only start if the cd was successful 
wget \ 
    --continue \    # resume on files that have already been partially transmitted 
    --mirror \     # --recursive --level=inf --timestamping --no-remove-listing 
    --no-host-directories \ # don't create 'ftp://src/' folder structure for synced files 
    --ftp-user=$USER \ 
    --ftp-password=$PASS \ 
    ftp://$HOST/$RDIR