2013-01-16 49 views
8

लक्ष्य ssh से अधिक स्थानीय और दूरस्थ फ़ोल्डर समन्वयित है करने के लिए विभिन्न सार्वजनिक कुंजी का उपयोग कर।सिंक्रनाइज़ किए जा रहे स्थानीय और दूरस्थ निर्देशिका rsync + ssh + एक उपयोगकर्ता ssh कुंजी मालिक

मेरे वर्तमान उपयोगकर्ता user1 है, और मैं एक सर्वर server1 को SSH पर कोई पासवर्ड-कम पहुँच सेटअप। मैं सर्वर 1 पर rsync उपयोगिता के माध्यम से स्थानीय फ़ोल्डर को फ़ोल्डर के साथ सिंक करना चाहता हूं। आम तौर पर मैं चल पाएंगे:

rsync -rtvz /path/to/local/folder server1:/path/to/remote/folder 

ssh पहुँच काम करता है के रूप में उम्मीद, rsyncssh से अधिक कनेक्ट करने में सक्षम है, लेकिन यह रिटर्न "अनुमति अस्वीकृत" त्रुटि क्योंकि server1 फ़ोल्डर पर /path/to/remote/folder है द्वारा user2 स्वामित्व: user2। फ़ोल्डर की फाइल अनुमति इसे किसी और द्वारा बदला जा करने की अनुमति नहीं है। उपयोगकर्ता 1सर्वर 1 पर एक सूडर है इसलिए sudo su - user2ssh सत्र के दौरान काम करता है। उपयोगकर्ता को ssh 'सर्वर पर एड करते समय उपयोगकर्ता को स्विच करने के लिए rsync कैसे करें?

समूह user2 को user1 जोड़ने के लिए एक विकल्प है क्योंकि सर्वर पर सभी उपयोगकर्ता/समूह प्रबंधन स्वचालित रूप से किया जाता है और एक केंद्रीय रेपो से दोहराया हर एक्स मिनट, कि मैं के लिए पहुँच नहीं है नहीं है।

गंतव्य फ़ोल्डर की अनुमतियों/स्वामित्व बदलने के लिए एक ही: यह स्वचालित रूप से सभी अनुमतियों की एक रीसेट के साथ एक नियमित आधार पर अद्यतन किया जाता है।

संभव समाधान मेरे मन में आ रहा है एक स्क्रिप्ट है कि सर्वर पर से user1 स्वामित्व वाली एक अस्थायी मध्यवर्ती रिमोट फ़ोल्डर के साथ स्थानीय फ़ोल्डर समन्वयित करता है, और उसके बाद के रूप में user2 दो रिमोट फ़ोल्डरों सिंक करता है।

एक छोटा और खूबसूरत समाधान किसी भी सफलता उपज नहीं था के लिए Googling।

उत्तर

5

मैं अपने आप को द्वारा इसे करने की कोशिश नहीं की है, लेकिन कैसे के बारे में rsync की '--rsync-पथ' का उपयोग कर विकल्प?

rsync -rtvz --rsync-path='sudo -u user2 rsync' /path/to/local/folder server1:/path/to/remote/folder 
+0

यह वही है जो मुझे चाहिए। अपेक्षित के रूप में काम करता है। आपका बहुत बहुत धन्यवाद! – schatten

0
user2

पासवर्ड से कम user1 के लिए पहुंच सेट करें उपयोग करने के लिए @ server1, तो कार्य करें:

rsync -rtvz /path/to/local/folder [email protected]:/path/to/remote/folder 
+1

क्या आप _user2_ की अधिकृत ssh कुंजी की सूची में _user1_ की सार्वजनिक कुंजी जोड़ना चाहते हैं? यदि हां, तो वे भी ओवरराइट हो जाते हैं। – schatten

1

अनुमतियाँ समस्या को ठीक करने के लिए आप एक एक SSH सत्र में लॉग से अधिक rsync चलाने की आवश्यकता उपयोगकर्ता के रूप में दूरस्थ रूप से:

rsync avz -e 'ssh -i privatekeyfile' /path/to/local/folder/ [email protected]:/path/to/local/folder 

निम्नलिखित उत्तर बताता है कि एसएसएच कुंजी कैसे सेट अप करें।

+0

कोई अनुमति समस्या नहीं है। _user1_ में एसएसएच कुंजी सेट अप हैं और _user1_ रिमोट मशीन पर एक सूडर है। इसलिए संभावित रूप से _user1_ में rsync कार्य करने के लिए सभी आवश्यक विशेषाधिकार हैं। – schatten

+0

@schatten यह एक अनुमति मुद्दा है। डिफ़ॉल्ट रूप से rsync सूडो का उपयोग नहीं करेगा क्योंकि आपके स्वीकृत उत्तर का प्रदर्शन किया गया है। दरअसल यह काफी चालाक है कि कैसे इस तरह rsync अनुकूलित किया जा सकता है! –