मैंने rsync
अतीत में भी इसका सामना किया है। मेरे लिए इसे ठीक करने वाला समाधान screen
सत्र के भीतर से चल रहा था , जो दूरस्थ सर्वर से कनेक्शन बनाए रखने में मदद करने में सक्षम था।
screen -LS rsync
[execute your rsync command]
Ctrl-A+D to detach from the session
आप चलकर स्थिति की जांच कर सकते हैं screen -x rsync
(या यदि आप सत्र का नाम तय करते हैं, यदि आप इसे एक नाम देते हैं, जिसकी आवश्यकता नहीं है)। यह आपके वर्तमान शेल को उस सत्र में पुनः संलग्न करेगा। अपने स्टेटस को चेक करने के बाद उसे फिर से अलग करना याद रखें ताकि वह बैकग्राउंड में चलता रहे।
आप screen
एक असफल झपट्टा में पृष्ठभूमि के माध्यम से चलाने के लिए कमांड को निष्पादित कर सकते हैं [कोई गलत होने पर कृपया मुझे सही करें] screen -dm 'command'
। आप man screen
पिछले एक कोशिश करने से पहले चाहते हो सकता है ।
संपादित करें:
मैं अपना उत्तर संपादित कर रहा हूं क्योंकि आपने पुष्टि की है कि screen
इस परिदृश्य में कोई सहायता नहीं scp
मिलती है, लेकिन आपने मेरी टिप्पणी का उत्तर देने का प्रयास करने और यह देखने के लिए सुझाव दिया कि आपको किस प्रकार के परिणाम मिलते हैं, जिसके लिए आपने उस अजीब तरह से पर्याप्त उत्तर दिया, यह ठीक काम किया।
तो मेरा नया उत्तर यह है: उपयोग scp
- या ssh
(साथ tar
) - के बजायrsync
दी, scp
के रूप में सुविधाओं के विशाल संख्या का समर्थन नहीं करता rsync
है, लेकिन आप वास्तव में सिर्फ कितने सुविधाओं के बारे में है कि यह हैरानी होगी करता है समर्थन है कि लगभग कर रहे हैं समान की है कि rsync
।
इसके लिए scp
और अन्य विकल्पों के लिए वास्तविक विश्व परिदृश्य rsync
:
इसके बाद, मुझे एक शेल स्क्रिप्ट बनाने का काम सौंपा गया, जो हमारे उत्पादन सर्वरों से लॉग खींचती है और उन्हें स्थानीय रूप से एक वेब सर्वर पर संग्रहीत करती है ताकि डेवलपर्स उन्हें समस्या निवारण उद्देश्यों के लिए उपयोग कर सकें। rsync
हमारे सर्वर पर स्थापित करने के लिए यूनिक्स टीम को प्राप्त करने का असफल प्रयास करने के बाद , मैं एक वर्कअराउंड का उपयोग करके आया scp
जो कि बस काम कर रहा था ।
यह कहा जा रहा है, मैंने हाल ही में स्क्रिप्ट को संशोधित किया है ताकि इसका उपयोग हो ssh
और tar
- GNU tar
/ gtar
, सटीक हो। जीएनयू tar
विकल्पों में से कई कि आप वास्तव में में मिलेगा का समर्थन करता है rsync
, जैसे --include
, --exclude
, अनुमति / विशेषता संरक्षण, संपीड़न, आदि
जिस तरह से अब मैं इसे पूरा करता हूं ssh
वह रिमोट सर्वर (पबकी ऑउटफिट के माध्यम से) और उपयोग करने के लिए है gtar -czf - [other options such as --include='*.log' and --exclude='*core*', etc.]
- यह सभी जानकारी को लिखता है stdout
, जिसे बाद में [स्थानीय रूप से] पाइप किया जाता है tar -xzf
ताकि दूरस्थ उत्पादन सर्वर पर कोई बदलाव न हो। , और स्थानीय सर्वर के रूप में खींची गई सभी फाइलें। यह rsync
इस मामले में एक बढ़िया विकल्प है । केवल एक ही महत्वपूर्ण बात न तो समर्थन tar
और न ही scp
वृद्धिशील बैकअप और ब्लॉक-स्तरीय त्रुटि की जाँच के स्तर हैं rsync
।
पूर्ण कमांड जिसका उपयोग करते समय मैं उल्लेख कर रहा हूं ssh
और tar
यह कुछ इस तरह होगा (रिमोट सोलारिस 10 है; स्थानीय डेबियन है, इसके लायक क्या है):
cd /var/www/remotelogs
ssh -C user@remotehost "cd /path/to/remote/app.directories; gtar -czf - --include='*.log' --exclude='*.pid' --exlude='*core*' *" | tar -xz
आपके परिदृश्य में यह विपरीत होगा - tar -cf -
स्थानीय रूप से, और रिमोट सर्वर से पाइप के माध्यम से ssh user@remotehost "tar -xf -"
- एक और उत्तर है जो इस प्रकार के व्यवहार को संदर्भित करता है लेकिन उतना विस्तार में नहीं जाता है।
कुछ अन्य विकल्प हैं जिन्हें मैंने चीजों को गति देने के लिए शामिल किया है। मैंने निष्पादन समय को यथासंभव कम करने के लिए अथक प्रयास किया। आपको लगता होगा कि कम्प्रेशन का उपयोग tar
करना व्यर्थ होगा, लेकिन यह वास्तव में चीजों को थोड़ा गति प्रदान करता है, जैसा कि -C
ध्वज का उपयोग कम्प्रेशन ssh
को सक्षम करने के ssh
साथ होता है। मैं इस पोस्ट को बाद की तारीख में अपडेट कर सकता हूं जिसमें मेरे द्वारा उपयोग की जाने वाली सटीक कमांड को शामिल करना है (जो कि मैंने पोस्ट की है, उसके समान है), लेकिन मुझे इस समय वीपीएन पर मिलने का मन नहीं है क्योंकि मैं इस सप्ताह छुट्टी पर हूं।
सोलारिस 10 पर, मैं भी उपयोग करता हूं -c blowfish
, क्योंकि यह प्रमाणित करने के लिए सबसे तेज सिफर है और चीजों को गति देने में भी मदद करता है, लेकिन हमारे सोलारिस 11 या तो इसका समर्थन नहीं करते हैं या इस सिफर सूट को अक्षम कर दिया है।
इसके अतिरिक्त, यदि आप ssh
/ tar
विकल्प के साथ जाना चुनते हैं , तो वास्तव में उपयोग करने के मेरे मूल समाधान को लागू करने के लिए एक अच्छा विचार होगा screen
यदि आप एक बैकअप कर रहे हैं जो थोड़ी देर लगेगा। यदि नहीं, तो सुनिश्चित करें कि आपके रखने की समय-सीमा / टाइमआउट सेटिंग्स आपके ssh_config
अधिकार में हैं, या यह विधि टूटी हुई पाइप के कारण भी होगी।
यहां तक कि अगर आप साथ चलते हैं scp
, तो मैं हमेशा इस तरह के ऑपरेशन का उपयोग करने screen
या केवल मामले में करने के लिए सबसे अच्छा अभ्यास करता हूं । कई बार मैं अपनी सलाह का पालन नहीं करता और ऐसा करने में विफल रहता हूं, लेकिन यह सुनिश्चित करने के लिए कि इन सक्रिय शेल सत्रों को किसी भी तरह से डिस्कनेक्ट करने के कारण दूरस्थ नौकरी खराब न हो जाए, इन उपकरणों में से एक का उपयोग करना वास्तव में एक अच्छा अभ्यास है।tmux
मुझे पता है कि आप अपने rsync
मुद्दे के मूल कारण का पता लगाना चाहते हैं । हालांकि, अगर यह वास्तव में महत्वपूर्ण है, तो ये दो बेहतरीन वर्कअराउंड हैं जिन्हें आप इस बीच प्रयोग कर सकते हैं।
kerberos
रिमोट सर्वर पर प्रमाणित करने के लिए उपयोग करता हूं ।