2009-02-18 15 views
6

में netrw के माध्यम से रिमोट फाइलों को संपादित करते समय स्थानीय बैकअप बनाएं, मैं vim और netrw प्लगइन का उपयोग करके दूरस्थ रूप से कई फ़ाइलों के साथ काम करता हूं। मैं &backupext (documentation में पाया गया) को बदलकर टाइमस्टैम्प बैकअप भी रखता हूं।विम

दूरस्थ फ़ाइल (scp: //server//folder/file.txt) में काम करते समय, मैंने देखा कि जब मैं इसे सहेजता हूं, तो बैकअप भी नहीं बनाया जा रहा है।

क्या कोई तरीका है कि जब भी मैं एक दूरस्थ फ़ाइल सहेजता हूं तो क्या मैं बैकअप स्वचालित रूप से स्थानीय रूप से बना सकता हूं (vim बैकअप सेटिंग्स के अनुसार)?

+0

क्या आपने स्थानीय फ़ोल्डर में 'बैकअपडीयर' सेट करने का प्रयास किया है? –

उत्तर

2

मुझे नहीं लगता कि टॉगल करने के लिए एक सरल सेटिंग है। हालांकि आप कुछ स्क्रिप्ट करने का प्रयास कर सकते हैं - बैकअप लिखने के लिए अपना खुद का BufWriteCmd ऑटोोकॉन्ड जोड़ें। डिबगिंग के लिए set verbose=9 का उपयोग करने का प्रयास करें (और यह देखने के लिए कि netrw यह कैसे करता है)।

1

अच्छी तरह से अपने एसपीपी प्रोटोकॉल उपयोग से निर्णय लेते हुए, ऐसा लगता है कि fuse sshfs का उपयोग करने के लिए यह आपके लिए बहुत आसान होगा, जो आपको केवल एक पुश/पुल प्रकार CRUD इंटरफ़ेस के बजाय आपको सामान्य फाइल सिस्टम व्यवहार का समर्थन करने में सक्षम बनाता है ।

+0

netrw एक्सटेंशन आंतरिक रूप से scp का उपयोग करता है। मैं sshfs के साथ मिश्रित भाग्य मिला है। – matpie

+0

क्या आप अपनी वर्तमान कॉन्फ़िगरेशन पोस्ट कर सकते हैं? साथ ही, http://vimdoc.sourceforge.net/htmldoc/options.html#'secure 'देखें, आप किसी भी सैंडबॉक्स विकल्पों को भी सुरक्षित नहीं कर सकते हैं, कम से कम जब तक आप अपना बैकअप काम नहीं कर लेते। – RandomNickName42

2

मैं एक बार इस समस्या का एक संस्करण के साथ संघर्ष किया: परिवर्तन मैं एक एकल दूरस्थ मशीन पर एक एकल स्रोत पेड़ में किए गए स्थानीय रिकॉर्ड रखने।

मैंने पूरे स्रोत पेड़ की एक स्थानीय प्रति और फाइलों के संस्करण के लिए एक स्थानीय svn भंडार बनाए रखा। Netrw का उपयोग करने और स्थानीय रूप से बैकअप को सहेजने के तरीके की तलाश करने के बजाय, मैंने स्थानीय रूप से सबकुछ संपादित किया और रिमोट मशीन में अपने परिवर्तनों को स्वचालित रूप से प्रसारित करने के लिए एक तरीका चाहिए।

समाधान 1: फ़ाइल लिखने के बाद फ़ाइल की प्रतिलिपि बनाने के लिए एक BufWritePost Autocommand का उपयोग करें। यह सिस्टम कुशलतापूर्वक पर्याप्त काम कर सकता है अगर सिस्टम फाइल डिस्क्रिप्टर साझा करने की प्रक्रिया को अनुमति देता है, क्योंकि रिमोट मशीन पर मास्टर एसएसएच सत्र चलाने और बाद के सत्रों के लिए कनेक्शन साझा करना संभव है। यदि आप कम भाग्यशाली हैं (मैं उस समय एक विंडोज़ मशीन पर काम कर रहा था), प्रत्येक फ़ाइल के लिए नए कनेक्शन पर बातचीत करने में लगने वाला समय दर्दनाक हो सकता है

समाधान 2: विंडोज़ के लिए, WinSCP का उपयोग करें, जिसमें " रिमोट मशीन को अद्यतन करें "मोड, जिसमें यह एक निर्देशिका और इसकी सभी उपनिर्देशिकाओं को परिवर्तनों के लिए मॉनीटर करता है और फिर नियमों का एक सेट (अनदेखा करने के पैटर्न, विभिन्न फ़ाइल प्रकारों के लिए स्थानांतरण मोड इत्यादि) को स्वचालित रूप से परिवर्तनों का प्रचार करता है।

0

नेट्रू प्लगइन पूरी तरह से :write कमांड को बाईपास करता है, 'बैकअप' कार्यक्षमता को वापस पाने का एकमात्र तरीका यह है कि इसे स्वयं ऑटोकॉन्ड्स का उपयोग करके करना है।

0

मुझे एहसास है कि यह मूल प्रश्न का सीधा जवाब नहीं है - हालांकि, आप जो कर रहे हैं वह एक साधारण-वीसीएस-इन-डिस्गुइज जैसा लगता है - इसलिए एक कारण है कि आप रिमोट फाइलें नहीं बनाते हैं। एक गिट भंडार, फिर स्थानीय रूप से भंडार क्लोन करें और संपादन के बाद परिवर्तनों को धक्का दें?