के लिए emacs ट्रम्प बनाम rsync का उपयोग करके मैं emacs ट्रम्प का उपयोग करके कुछ दूरस्थ विकास कर रहा हूं और पाया कि यह काफी धीमी थी। हर बार जब मैं एक फ़ाइल सहेजता हूं, तो इसे पूरा करने में लगभग 10 सेकंड लगते हैं। तो, अब मैं फ़ाइलों को दूरस्थ रूप से स्थानांतरित करने के लिए rsync का उपयोग कर रहा हूं और यह बहुत तेज़ काम करता है, इसमें लगभग एक और प्लस होता है, स्थानीय इलाकों से स्थानीय बचाता है। क्या कमांड लाइन पर rsync के रूप में तेज़ी से चलाने के लिए ट्रम्प के भीतर कोई कॉन्फ़िगरेशन विकल्प हैं? क्या मुझे ऐसे खराब प्रदर्शन को देखने के बावजूद rsync के बजाय ट्रम्प का उपयोग करने के कोई फायदे हैं?रिमोट डेवलपमेंट
उत्तर
यदि आप एसएसएच/एसपीपी कार्यक्षमता के लिए ट्रम्प का उपयोग कर रहे हैं, तो आप एक सतत एसएसएच कनेक्शन खोलने के लिए ट्रम्प ऑपरेशन को बहुत तेज़ी से बनाएंगे: वे हर बार एक ताजा बनाने के बजाय मौजूदा कनेक्शन का पुन: उपयोग करेंगे सुरक्षा को प्रभावित किए बिना क्रिप्टोग्राफिक ओवरहेड का एक बड़ा सौदा। इस लेख को एसएसएच ControlMaster कार्यक्षमता पर देखें।
क्या आप gnu.org पर ट्रम्प दस्तावेज़ में सेक्शन के बारे में जानते हैं जो rsync का उपयोग करने का उल्लेख करता है? इसमें कहा गया है, भाग में:
5,3 बाहरी हस्तांतरण तरीकों
बाहरी हस्तांतरण के तरीकों, कई चैनलों के माध्यम से संचालित करने के लिए एक बाहरी हस्तांतरण उपयोगिता के लिए फ़ाइल स्थानान्तरण सौंपने जबकि कई कार्यों के लिए दूरस्थ खोल कनेक्शन का उपयोग कर।
यह एन्कोडिंग और डिकोडिंग के ऊपरी हिस्से को बचाता है जो एक कनेक्शन के माध्यम से स्थानांतरण को मल्टीप्लेक्स करना इनलाइन विधियों के साथ है।
...
rsync - ssh और rsync रिमोट मशीन और फ़ाइलों को हस्तांतरण करने rsync आदेश को सुरक्षित रूप से कनेक्ट करने के लिए ssh आदेश का उपयोग करते हुए SCP विधि के लगभग समान है।
While rsync performs much better than scp when transferring files that exist on both hosts, this advantage is lost if the file exists only on one side of the connection. The rsync based method may be considerably faster than the rcp based methods when writing to the remote system. Reading files to the local machine is no faster than with a direct copy. This method supports the ‘-p’ hack.
आवारा परिवहन विधि की एक बड़ी संख्या का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है, मैं तुम्हें दूरस्थ सर्वर से कनेक्ट करने के लिए ssh का उपयोग कर रहे लगता है।
मुझे विश्वास है कि ऑपरेशन को पूरा करने में जितना समय लगता है, वह कनेक्शन स्थापित करने और प्रमाणीकरण करने से आता है। यदि आप OpenSSH का एक नया पर्याप्त संस्करण उपयोग कर रहे हैं, तो कनेक्शन साझा करने की सुविधा का उपयोग करके इसकी सहायता की जा सकती है, ssh_config (5) में ControlMaster देखें।
मैं सुझाव है कि आप
ControlMaster auto
कोशिश करते हैं और देखते हैं कि अगर स्थिति में सुधार।
चूंकि आपने पहले कहा था कि आपको किसी विशेष सर्वर पर कोई समस्या है, तो समस्या मशीन पर sshd config फ़ाइल जांचें। यह शायद कुछ/etc/ssh/sshd_config जैसा है।
"UseDNS" नामक कॉन्फ़िगरेशन विकल्प की तलाश करें। इसे "नंबर" पर सेट करें
देखें कि क्या यह आपके लिए चीजों को गति नहीं देता है। यदि ऐसा है, तो एसएसएच शायद एक रिवर्स डीएनएस लुकअप पर इंतजार कर रहा है जिसकी आपको परवाह नहीं है।
हाल ही में मैं sshfs को गले लगाने आया हूं ताकि दूरस्थ फ़ाइलें स्थानीय रूप से संपादन योग्य हों।लिनक्स, मैक और यूनिक्स सिस्टम के लिए अच्छी तरह से काम करता है और एसएसएच भागों को प्रत्येक एक्सेस के बजाय एक कमांड में रखता है। और पूरी तरह से उपयोगकर्ता अंतरिक्ष में मौजूद है।
मेरे लिए गति महत्वपूर्ण थी! अब ट्रम्प का उपयोग वास्तव में सुखद है। मैं इसे sshfs पर भी पसंद करता हूं क्योंकि मैं भी emacs से संकलित करता हूं और ट्रम्प मेरे लिए रिमोट संकलन करता है और मेरे लिए कंपाइलर के त्रुटि संदेशों को व्याख्या करता है :)
यदि आप एसएसएच विधि का उपयोग कर रहे हैं, तो आप इसके बजाय sftp विधि आज़मा सकते हैं , जो (मुझे विश्वास है) रिमोट एसएसएच सर्वर के लिए एक सतत sftp कनेक्शन खोलता है। साथ ही, यदि आप गनोम का उपयोग कर रहे हैं, तो आप sftp
tramp-gvfs-methods
पर ट्रैम्प को एसएफटीपी सर्वर से कनेक्ट करने के लिए गनोम के जीवीएफएस का उपयोग कर जोड़ सकते हैं, जो तेजी से/अधिक सुविधाजनक हो सकता है या नहीं।
जवाब में से एक जोड़े को (जो महंगा कनेक्शन सेट अप/हाथ से झटकों अन्यथा ssh पर एक ट्रैम्प संचालन के लिए आवश्यक से बचा जाता है) खुला एक लगातार ssh कनेक्शन रखने के लिए ControlMaster को सक्षम करने का उल्लेख किया है, लेकिन आप डॉन ' इसका उपयोग करने के लिए Emacs के बाहर कुछ भी कॉन्फ़िगर करने की आवश्यकता नहीं है - यदि आप tramp-methods
वैरिएबल को देखते हैं तो आप देखेंगे कि मौजूदा विधियां हैं जो ControlMaster को सक्षम करती हैं।
विशेष रूप से, rsyncc
और scpc
विधियां।
कनेक्शन के दोनों पक्षों को निश्चित रूप से कंट्रोलमास्टर का समर्थन करने की आवश्यकता है (उदाहरण के लिए सिगविन ऐसा नहीं कर सकता है, जो विंडोज उपयोगकर्ताओं के लिए शर्म की बात है *), लेकिन मैं उन लोगों में से एक को अपने tramp-default-method
के रूप में सेट करने का सुझाव दूंगा।
लगातार कनेक्शन नहीं होने के कारण ट्रम्प उपयोग बहुत दर्दनाक होता है, लेकिन एक के साथ यह अविश्वसनीय रूप से उपयोग करने योग्य है (उस बिंदु पर, जहां एक उचित तेज़ कनेक्शन दिया गया है, आप लगभग भूल सकते हैं कि यह हो रहा है)।
आपके प्रश्न के अंतिम भाग के जवाब में, हाँ, मैन्युअल रूप से फ़ाइलों को rsyncing के बजाय ट्रम्प का उपयोग करने के बहुत अच्छे कारण हैं। प्राथमिक एक यह है कि शेल आदेश सीधे रिमोट सर्वर पर निष्पादित किए जा सकते हैं, और आपको इसके बारे में भी सोचना नहीं है, क्योंकि Emacs विवरण का ख्याल रखता है।
उदाहरण के लिए, एक रिमोट फ़ाइल बफर से, एमएक्सshell
आरईटी दूरस्थ सर्वर पर एक खोल खोलता है, और तरह एमएक्सrgrep
आरईटी और एमएक्सfind-grep-dired
आरईटी चलेंगे आदेश रिमोट सर्वर पर + grep खोजें। मेरा मानना है कि यह सामान्य रूप से उन कार्यों के लिए लागू होता है जो खोल कमांड का आह्वान करते हैं।
मेरे लिए, ट्रम्प का उपयोग करने के पर्याप्त कारण से अधिक है (जब तक रिमोट सर्वर पर Emacs इंस्टॉल नहीं किया जाता है और आपके स्थानीय डिस्प्ले का उपयोग करना एक विकल्प था, लंबे समय तक उपयोग के लिए, मैं इसके बजाय ऐसा करने पर विचार करता हूं)।
(*) Windows का उपयोग कर जब मैं एकमात्र ट्रैम्प (https://stackoverflow.com/a/3049375/324105) के लिए ControlMaster का उपयोग करने का कारण (Cygwin एक्स प्रदर्शन प्रदान करने के साथ) स्थानीय स्तर पर एक लिनक्स वी एम होस्ट करते हैं और है कि अंदर Emacs को चलाने के लिए इस्तेमाल किया।
मेरा emacs 25.3।2 में 'ट्रम्प-विधियों' में कोई 'scpc' या' rsyncc' नहीं है, लेकिन मुझे लगता है कि '% c' के लिए चर 'samp-ssh-controlmaster-options' डाला गया है और नियमित' ssh' विधि ' % c' – unhammer
- 1. रिमोट डेवलपमेंट प्रैक्टिस/टूल्स
- 2. वेब डेवलपमेंट
- 3. एंड्रॉइड डेवलपमेंट
- 4. एंड्रॉइड डेवलपमेंट
- 5. डेस्कटॉप डेवलपमेंट से वेब डेवलपमेंट में स्थानांतरित करना
- 6. एंड्रॉइड डेवलपमेंट टूल्स
- 7. एग्इल सॉफ्टवेयर डेवलपमेंट 6.0
- 8. एक्लिप्स एंड्रॉइड डेवलपमेंट
- 9. गेम डेवलपमेंट साउंड फ्रेमवर्क
- 10. एसवीएन वेब डेवलपमेंट वर्कफ़्लो
- 11. एंड्रॉइड गेम डेवलपमेंट
- 12. एंड्रॉइड डेवलपमेंट टूलकिट
- 13. एंड्रॉइड गेम्स डेवलपमेंट एसडीके?
- 14. एग्इल डेवलपमेंट 101 वीडियो
- 15. आईफोन गेम डेवलपमेंट
- 16. एंबेडेड डेवलपमेंट बोर्ड
- 17. क्लाउड-आधारित एंड्रॉइड डेवलपमेंट
- 18. एंड्रॉइड मल्टीप्लेयर गेम डेवलपमेंट
- 19. एंबेडेड डेवलपमेंट बोर्ड
- 20. एंड्रॉइड चैट एप्लिकेशन डेवलपमेंट
- 21. एंटरप्राइज़ डेवलपमेंट (.NET 2.0+)
- 22. एंबेडेड प्लेटफॉर्म डेवलपमेंट (! सी)
- 23. एंड्रॉइड डेवलपमेंट विशेषज्ञ
- 24. रिमोट
- 25. वर्डप्रेस थीम-डेवलपमेंट पर संसाधन
- 26. शुरुआती के लिए एंड्रॉइड डेवलपमेंट
- 27. एंड्रॉइड गेम डेवलपमेंट शुरू करना
- 28. फ़ायरफ़ॉक्स एक्सटेंशन डेवलपमेंट फ़ायरफ़ॉक्स 4
- 29. ओएस एक्स ऐप डेवलपमेंट फ्रेमवर्क
- 30. एंड्रॉइड डेवलपमेंट: वेबव्यू के एचटीएमएल
यह अभी भी लगभग 10 सेकंड लेता है, लेकिन मैं तत्काल अन्य सर्वर से कनेक्ट करने में सक्षम हूं। मुझे आश्चर्य है कि यह एक सर्वर समस्या हो सकती है। –
यदि यह अभी भी 10 सेकंड लेता है, तो यह देरी के कारण रिमोट मशीन पर .bashrc/.bash_profile हो सकता है। –