जवाबों:
आप निम्न अनुमोदन का प्रयास कर सकते हैं: डाउनलोड किए गए भाग को छोड़ने के लिए scp उपयोग dd के बजाय और शेष को फ़ाइल में जोड़ें।
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh rsys "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
संभव अनुकूलन: बड़े ब्लॉकों के साथ काम करते हैं। चलो इसे एक होमवर्क के रूप में छोड़ दें।
dd
छोटे ब्लॉकों के साथ धीमी गति से (सिर्फ 350 kB / s यहाँ) हो सकता है। सौभाग्य से, scp
स्थानांतरण 1024 बाइट ब्लॉक में आते हैं। यदि आपकी फ़ाइल के लिए ऐसा है (या फिर, इसे निकटतम 1024 बाइट ब्लॉक में काटकर), तो आप इसे इस तरह से गति दे सकते हैं ssh rsys "dd if=./srcfile bs=1024 skip=$sofar" >> ./destfile
:। (ध्यान दें कि $sofar
तब स्किप करने के लिए 1024 बाइट ब्लॉक की संख्या होनी चाहिए!)
rsys
दूसरी पंक्ति में सिर्फ एक उदाहरण है hostname के लिए कुछ विशेष तर्क नहीं ssh
। मेरा सुझाव है कि आप इसे user@host
भ्रम से बचने के लिए प्रतिस्थापित करें ।
हां, रुकावट के बिंदु से फिर से शुरू करने के तरीके हैं, लेकिन यह एससीपी का उपयोग करना संभव नहीं है। sftp reget filename
आपको क्या चाहिए Yarek और Grawity ने वैध समाधान प्रदान किए हैं जो I +1 दोनों के लिए हैं, लेकिन रुकावट के एक बिंदु से फिर से शुरू करने के लिए, मुझे rsync पसंद है। उदाहरण कमांड प्रदान करते हैं कि दोनों मान लेते हैं कि आप दूरस्थ सर्वर से अपने स्थानीय कार्य केंद्र (डाउनलोडिंग) में एक फ़ाइल प्राप्त कर रहे हैं। कृपया ध्यान रखें कि अंतिम दो मापदंडों को उस क्रम में source_file और target_file माना जाना चाहिए। फ़ाइलनाम का वाक्य-विन्यास इस आधार पर भिन्न होता है कि स्रोत या लक्ष्य फ़ाइल स्थानीय है या दूरस्थ। अगर मैं [पाठ] फाइलें भेज रहा था, तो मैं दिए गए उदाहरणों को फिर से लिखूंगा:
# स्थानीय से रिमोट तक sofar = `ssh Remote_system ls -l इंटरप्टेड_फाइल | awk '{प्रिंट $ 5}' '; dd if = source_file bs = 1 Skip = $ sofar | ssh Remote_system "बिल्ली >> ./interrupted_file"
और rsync समाधान के लिए, मैं जोड़ता हूं -e ssh
। आपको इस बात पर विचार करना चाहिए कि क्या आपको वर्बोसिटी, कम्प्रेशन, ओनरशिप, परमिशन, टाइमस्टैम्प, रिकर्स डाइरेक्टरीज़ आदि की ज़रूरत है, -L पैरामीटर के बारे में मैन पेज और गूगल चेक करें। आप चाहते हैं कि सहानुभूति उन्हें संदर्भित करने के बजाय लिंक के रूप में बनी रहे।
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file
scp -o ConnectTimeout 60
आपको किसी कनेक्शन के लिए टाइमआउट निर्दिष्ट करने देता है। अपने संबंध को टूटने से बचा सकते हैं।
हां, अगर दोनों छोर sftp को सपोर्ट करते हैं - तो scp remoteuser@remotehost:/absolute/filename .
फेल होने के बाद आप किस कर सकते हैं sftp remoteuser@remotehost
और फिर reget /absolute/filename
डाउनलोड को फिर से शुरू कर सकते हैं।