SSH के माध्यम से कई फ़ाइलों वाले फ़ोल्डर की प्रतिलिपि बनाने का सबसे तेज़ तरीका


13

Ssh के माध्यम से सर्वर पर फ़ाइलों को डुप्लिकेट करने का सबसे अच्छा तरीका क्या है?

मेरे मामले में: मैं Magento दुकान की नकल के बारे में बात कर रहा हूँ। (15000 फाइलें ~ 50 एमबी)

cp -a source destination

घंटे लग रहे हैं ... (मेरे मामले में सर्वर 2.4 Xeon, 2GB RAM है)

जवाबों:


19

एक शब्द rsync:।

ध्यान दें कि यदि आप एक धीमी लिंक पर हैं, या सर्वर भारी लोड के अधीन है, तो कॉपी करने के लिए उपयोग किया जाने वाला उपकरण अड़चन नहीं होगा, और किसी भी तरह से कॉपी करने का तरीका धीमा होगा।

इससे आपको अपने स्थानीय कंप्यूटर और दूरस्थ सर्वर: http://oreilly.com/pub/h/38 के बीच कॉपी करने का मूल उपयोग मिल सकता है

स्थानीय कंप्यूटर से दूरस्थ सर्वर पर कॉपी करने के लिए (आपको पथ, उपयोगकर्ता नाम और होस्ट पता, निश्चित रूप से प्रतिस्थापित करने की आवश्यकता है):

rsync -avz -e ssh /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
  • -a पुरालेख
  • -v वाचाल
  • -z संकुचित करें
  • -e ssh "SSH सुरंग का उपयोग करें"

दूसरी दिशा में कॉपी करने के लिए, पथ स्विच (पहला है से , दूसरे स्थान पर है करने के लिए ):

rsync -avz -e ssh remoteuser@remotehost.somewhere.example.com:/path/on/server /path/on/local/computer

लेकिन rsync एक ही सर्वर पर चीजों को कॉपी करने के लिए भी उपयोगी है:

rsync -av /path-to/copy/from /path_to/copy/to

2
ध्यान दें कि @Piskvor ने -zस्थानीय नकल के लिए विकल्प छोड़ दिया क्योंकि यह अनावश्यक ओवरहेड जोड़ता है। IMHO, आपको -zधीमी नेटवर्क लिंक पर rsync का उपयोग करते समय ही उपयोग करना चाहिए । यदि 100Base-T से अधिक मात्रा में डेटा की प्रतिलिपि बनाई जाए, तो आप बिना ठीक हो सकते हैं -z। एक तेज़ नेटवर्क कनेक्शन के साथ, संपीड़न का उपयोग करके आपके CPU को पेग किया जा सकता है और अन्य प्रक्रियाओं को भूखा रखा जा सकता है।
टोमोग्लिक

@tomlogic: अच्छा बिंदु - दूसरे शब्दों में, -zलैन कॉपी या एक मशीन के भीतर कॉपी करने के लिए उपयोग न करें ; -zइंटरनेट पर प्रतिलिपि के साथ और उसके बिना परीक्षण (एक या दूसरे तेज हो सकते हैं, कई चीजों पर निर्भर करता है)।
पिस्कोर ने

1
अगर आपको पता है कि आपकी फाइलें पहले से ही संकुचित हैं, तो मैं कंप्रेशन को भी छोड़ दूंगा, जैसे कि JPEGs से भरा एक फोल्डर ट्री को सिंक करना क्योंकि वहां कुछ भी हासिल नहीं करना है।
लाइन ब्रेक

नोट: -e sshअब दूरस्थ होस्ट के लिए डिफ़ॉल्ट है, इसलिए विकल्प को स्पष्ट रूप से पास करना आवश्यक नहीं है।
पिस्कॉर ने बिल्डिंग

3

एक और शब्द: scp

scp /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server

एक-शॉट सौदों के लिए, एसपीपी आसान है। यदि यह बहुत सारी फाइलें हैं, तो rsync एक अच्छा विचार है। यदि एक कनेक्शन गिरा दिया गया है, तो rsync उठा सकता है जहां इसे छोड़ा गया था।

मुझे पता था कि rsync में संपीड़न ( -z) था, और बस सीखा है कि scp भी करता है ( -C)।


खैर, IIRC वे दोनों SSH के कम्प्रेशन एल्गोरिदम का उपयोग कर रहे हैं, कम से कम नेटवर्क ऑप्स के लिए।
पिस्कोर ने

0

आपके सेटअप में, rsync संभवतः पर्याप्त है ... लेकिन एक उदाहरण के रूप में, यदि कई छोटी फाइलें हैं, तो यह तेजी से फ़ाइलों को ट्रांसफर करने से पहले rsync के माध्यम से हो सकता है। ऐसा इसलिए है क्योंकि स्वामी, टाइमस्टैम्प को स्थानांतरित करना, फ़ाइल फ़ाइल से छोटा होने पर अनुमतियाँ फ़ाइल से कुछ अधिक भारी होती हैं। टार एक फ़ाइल में सभी जानकारी को मर्ज कर देगा और rsync बड़ा ब्लॉक कॉपी करेगा।

या इससे भी बेहतर, अगर कोई सुरक्षा की आवश्यकता नहीं है, तो टार और एनसी का उपयोग करें:

गंतव्य पर, एक प्राप्त डेमॉन, अनकम्प्रेस्ड और अनटार तैयार करें:

nc -l -p 12345 | pigz -d | tar xvf - 

स्रोत पर, सब कुछ टार करें, समानांतर संपीड़ित करें और इसे गंतव्य पर भेजें:

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