2011-06-28 5 views
11

मुझे लगता है कि एक निर्देशिका की सामग्री को देखने और निगरानी करेंगे या तो रूबी या पायथन में एक स्क्रिप्टमॉनिटर घटनाओं वे होने के रूप में

1. Any new files 
2. Any saves to existing files. 

के लिए मैं क्या परवाह नहीं कर रहा हूँ लिखने के लिए करना चाहते हैं फाइलों में अलग - बस कि वे सहेजे गए हैं या नए हैं।

स्क्रिप्ट तब फ़ाइल का नाम (इसके पूर्ण पथ के साथ) शायद 2 सेकंड या कुछ बार एक बार देता है।

मैं फ़ोल्डर्स में फ़ाइलों को स्कैन करने के लिए इतना

mainfile.txt 
images/image1.jpg 
images/icons/icon1.png 

इन सभी फ़ाइलें/फ़ोल्डर की जरूरत montitored जा करने के लिए करना चाहते हैं।

मैं अंततः उन फ़ाइलों को एफ़टीपी करना चाहता हूं जो बदल गए हैं/जोड़े गए हैं, लेकिन मुझे समस्या के पहले भाग के समाधान के लिए बसने में खुशी है क्योंकि मुझे पता है कि कैसे ftp करना है (लेकिन अगर आप चाहते हैं तो हर तरह से इसे शामिल करें करने के लिए!)

मैं OSX 10.5.8 का उपयोग कर रहा

उत्तर

1

मैं डिजाइन उपकरण का उपयोग कर की सलाह देते हैं आप जो वर्णन कर रहे हैं उसके लिए - rsync।

rsync आपके लिए यह सभी कार्यवाही करेगा। यह संशोधित या नई फ़ाइलों के लिए जांच करेगा, और उन्हें स्कैन करें (और केवल उस फ़ाइल के हिस्सों की प्रतिलिपि बनाकर ऑप्टिमाइज़ करें जो पूरी फ़ाइल नहीं है) लक्ष्य होस्ट पर।

rsync -a mainfile.txt images/image1.jpg images/icons/icon1.png remotehost:/directory/to/sync/files/to 

आप फ़ाइलें उस पर समन्वयित किया गया की एक सूची चाहते हैं, आप को जोड़कर rsync की लॉगिंग tweak कर सकते हैं:

-q --log-format="%f" 

हालांकि, यहां तक ​​यह काफी है कि तुम क्या कर रहे हैं की तरह ध्वनि नहीं है बाद। ऐसा लगता है जैसे आप तेजी से प्रतिकृति फाइल सिस्टम चाहते हैं, अक्सर लगातार प्रतिलिपि नहीं।

एक प्रतिकृति फाइल सिस्टम को पता चलेगा कि तत्काल परिवर्तन किए गए हैं (आप उन्हें फाइल सिस्टम में बना रहे हैं), और दूसरी तरफ एक ही बदलाव कर सकते हैं। प्रारंभिक सेटअप के बाद आपके हिस्से पर कोई काम आवश्यक नहीं है। यह संभव नहीं हो सकता है, आपको स्थिति को पूरी तरह से वर्णन करना होगा।

3

आह, एफ़टीपी देखना। जैसे ही होता है, मैंने काम के लिए ऐसा कुछ बनाया। जबकि मेरा कई बाधाओं से निपट रहा था, मुझे उम्मीद है कि आपके पास नहीं है, लिनक्स पर बैठे हिस्से को आसान था। इस दिन और उम्र में ओएसएक्स अधिकतर एक पुनर्निर्मित लिनक्स है।

तो, आप iwatch स्थापित करने में सक्षम होना चाहिए, जो inotify कर्नेल सुविधा का उपयोग करता है। यदि आप iwatch का उपयोग नहीं कर सकते हैं, जो कि बहुत ही आश्चर्यजनक होगा क्योंकि यह पर्ल में लिखा गया है, तो स्रोत आपको इंगित करना चाहिए कि इनोटिफ़ाई के साथ सीधे संवाद कैसे करें। This link में इनोटिफ़ाई के साथ अजगर का उपयोग करने पर सामान है।

iwatch के कुछ अन्य विकल्प हैं, लेकिन वे सभी inotify में हुक। एकमात्र अन्य विकल्प एक टाइमर पर मैन्युअल निर्देशिका स्कैन करना है, जो घबराहट है और इससे बचा जाना चाहिए। मैंने इसे विंडोज़ पर किया, और इसमें .... समस्याएं हैं। अगर मुझे कभी मौका मिलता है, तो मैं उस सेक्शन को फिर से काम कर दूंगा।

6

गहरे लाल रंग का यहाँ के लिए एक मणि जो आपकी मदद कर सकता है: https://github.com/thibaudgg/rb-fsevent

FSEvent प्रणाली आप ओएस एक्स पर उपयोग करना चाहते हैं और यह एक बाध्यकारी यह रूबी में लाने, इस मणि रक्षक है कि द्वारा इस्तेमाल किया जाता है मुझे यह कैसे मिला। (https://github.com/guard/guard)

आप गार्ड का उपयोग करने पर भी विचार कर सकते हैं जो फ़ाइलों/पथों की निगरानी करने और परिवर्तनों पर कार्रवाई चलाने के लिए एक अच्छा एपीआई प्रदान करता है।

संपादित करें: जब से मैं इस पोस्ट के लिए एक नया मणि सार मंच विशिष्ट सामान के लिए जारी किया गया था: https://github.com/guard/listen, इस मणि एक पोर्टेबल कई प्लेटफार्मों

2

मैं सिंक करने के लिए एक गहरे लाल रंग का guard के आधार पर मणि बनाया पर फाइल सिस्टम की घटनाओं पर नजर रखने के एपीआई प्रदान एक Dreamweaver- जैसी फैशन में, फाइल सिस्टम घटनाओं के दौरान एक FTP के लिए फ़ाइलें। यह थोड़ा सा युवा है लेकिन मैं बिना किसी समस्या के पिछले हफ्तों में इसका उपयोग कर रहा हूं।

इसे guard-ftpsync कहा जाता है और मेरा मानना ​​है कि यह आपके पास सही समस्या हल करता है।

संबंधित मुद्दे