2014-10-16 4 views
30

मैं फ़ाइलों के विशाल फ़ोल्डर की प्रतिलिपि बनाने के लिए scp shell कमांड का उपयोग करता हूं।आंशिक रूप से कॉपी की गई फ़ाइलों के साथ एसपीपी कैसे शुरू करें?

लेकिन समय के कुछ बिंदु पर मैं (Ctrl + C से या मारने के) चल रहा कमांड को मारने के लिए किया था।

मेरी समझ SCP प्रतिलिपि की गई फ़ाइलें क्रमिक रूप से करने के लिए

, इसलिए केवल एक आंशिक रूप से कॉपी किया फ़ाइल होना चाहिए।

सफलतापूर्वक कॉपी की गई फ़ाइलों को ओवरराइट करने और आंशिक रूप से प्रतिलिपि बनाई गई फ़ाइलों को सही ढंग से संभालने के लिए समान स्किप कमांड कैसे शुरू किया जा सकता है?

पीएस मुझे पता है कि मैं इस तरह की चीजें rsync में कर सकता हूं, लेकिन किसी कारण से मेरे लिए एसपीपी तेज है और मैं इसके बजाय इसका उपयोग करता हूं।

+2

मुझे लगता है rsync धीमी है क्योंकि यह चीजें हैं जो आप restar करने की अनुमति कर कुछ अतिरिक्त समय बिताता है: सेकंड जब शुरू में ठीक चल रहा है मैं निम्नलिखित जानवर बल समाधान के साथ समाप्त हो गया एक हस्तांतरण टी। आप आंशिक स्थानांतरण को समाप्त करने के लिए बस rsync का उपयोग करने पर विचार कर सकते हैं। –

+2

यदि आप चालाक होना चाहते हैं, तो आप हमेशा 'डीडी' को उचित' स्किप 'चर के साथ आज़मा सकते हैं, और पाइप को 'ssh' :) –

उत्तर

55

आप का उपयोग करना चाहिए rsyncssh से अधिक

rsync -P -e ssh [email protected]:/remote/path /local/path 

कुंजी विकल्प -P है, जो के रूप में --partial --progress

अन्य विकल्प ही है, इस तरह के -a (संग्रह मोड के लिए), और है -z (संपीड़न सक्षम करने के लिए) भी इस्तेमाल किया जा सकता है।

मैनुअल: https://download.samba.org/pub/rsync/rsync.html

+6

यह प्रतिलिपि फिर से शुरू नहीं करता है। विकल्प '-P' फिर से शुरू करने के लिए गायब है। – Markus

+7

बस यह ध्यान रखना चाहता था कि rsync बस बैच प्रतिलिपि को ठीक से शुरू कर देगा। –

+1

आपको "स्किपिंग निर्देशिका" मिल जाएगी। त्रुटि, जब तक आप '-r' निर्दिष्ट नहीं करते हैं। स्रोत: http://lucasb.eyer.be/snips/rsync-skipping-directory.html –

9

एक वैकल्पिक rsync करने के लिए:

उपयोग sftp विकल्प -r (रिकर्सिवली पूरे निर्देशिका कॉपी) और sftp के get आदेश का विकल्प -a साथ मौजूदा फ़ाइलों का आंशिक स्थानान्तरण फिर से शुरू करने।

पूर्वापेक्षा: आपका sftp कार्यान्वयन पहले से ही एक -a साथ get का विकल्प है।

उदाहरण: अपने स्थानीय वर्तमान निर्देशिका के लिए दूरस्थ सर्वर से

कॉपी निर्देशिका /foo/bar। निर्देशिका bar आपके स्थानीय वर्तमान निर्देशिका में बनाई जाएगी।

echo "get -a /foo/bar" | sftp -r server 
+1

आपका समाधान बहुत अच्छा है क्योंकि मेरा सर्वर ssh में लॉगिन की अनुमति नहीं देता है, इसलिए rsync नहीं करता है' टी काम नहीं मुझे डाउनलोड करने के बजाय अपलोड करने की आवश्यकता है, इसलिए मेरा आदेश यहां है: 'echo "put -a foo/bar" | sftp -r सर्वर:/foo' –

2

एक और संभावना SCP आप पहले से ही शुरू कर दिया है जब यह रुक जाता बचाव की कोशिश करने के लिए है।

ctrl + पृष्ठभूमि करने के लिए और इसे रोकने के z, तो प्राप्त सर्वर और प्रवेश, तो बाहर निकलने के लिए अधिक ssh। अब एसपीपी प्रक्रिया को एफजी करें और इसे 'स्टॉल' से फिर से शुरू करें!

+0

मेरे लिए काम नहीं किया। – NateS

+0

मैक ओएस एक्स पर मेरे लिए काम किया। इसे पोस्ट करने के लिए धन्यवाद, यह आज मेरे बेकन को बचाया! –

-2

मैं कल ही समस्या है, स्थानांतरित एक विशाल एसक्यूएल SCP के माध्यम से अधिक डंप, मैं wget --continue the_url

साथ भाग्यशाली ब्लॉग पोस्ट यह काफी अच्छी तरह से बताते हैं कि http://www.cyberciti.biz/tips/wget-resume-broken-download.html

+0

साइट को नीचे जाने के उत्तर में प्रासंगिक भागों को यूआरएल से कॉपी करने के लिए सबसे अच्छा अभ्यास माना जाता है। – Ryre

0

जब rsync स्टालों के साथ-साथ की जोड़ी के बाद

cat run_me.sh 
#!/bin/bash 
while [ 1 ] 
do 
    rsync --partial --progress --rsh=ssh [email protected]:/path/file.tgz file.tgz & 
    TASK_PID=$! 
    sleep 60 
    kill $TASK_PID 
    sleep 2 
done 
संबंधित मुद्दे

 संबंधित मुद्दे