मैं SSHFS पर इनॉटिफ़ाइ या नामित पाइप का उपयोग कैसे करूँ?


12

धन्यवाद sshfsजादू, मैं एक दूरस्थ सर्वर से अपने घर की डीआईआर को माउंट कर सकता हूं

sshfs user@server:/home/user ~/remote

आशावादी, मैंने सोचा कि मैं एक स्थानीय सेट करेंगे inotifyहुक पर ~/remote/logFile(में sshfsतो एक स्थानीय कार्यक्रम दूरस्थ लॉग परिवर्तन के लिए प्रतिक्रिया कर सकते हैं माउंट)।

cd ~/remote
touch logFile                                # create remote file
inotifywait logFile &                        # set up local inotify-hook
ssh user@server -x touch /home/user/logFile  # touch file from remote

कुछ नहीं होता हैinotifywaitजब तक मैं touchस्थानीय रूप से फाइल नहीं करता तब तक चुप है । नामित पाइप के लिए लेखन इसी तरह विफल रहता है।

ऐसा क्यों है?
मैं इस अंतर को कैसे पा सकता हूं?

मैं रिमोट पर चला सकता हूं inotifywait, फाइल सिस्टम को बदल सकता हूं , क्रमबद्धता रणनीति बदल सकता हूं और स्थानीय से संबंध बना सकता हूं, लेकिन फिर मैं मूल रूप से SSHFS को लागू कर रहा हूं । और यह पूरी तरह से अमूर्तता को मारता है।


2
मुझे नहीं लगता कि inotifyस्थानीय सिस्टम पर कोई ऐसा तरीका है जिससे दूरस्थ फाइल सिस्टम पर बदलाव का पता लगाया जा सके। उन परिवर्तनों में स्थानीय कर्नेल लूप से बाहर है। आपको inotifywaitसर्वर पर चलने की आवश्यकता है , क्लाइंट की नहीं।
बारमर

@Barmar लेकिन तब क्लाइंट (स्थानीय मशीन) को परिवर्तनों के बारे में पता नहीं चलेगा। मैंने इसके बारे में थोड़ा जोड़ने के लिए संपादन किया।
एको

सामान्य तौर पर, नेटवर्क फ़ाइल सिस्टम पूरी पारदर्शिता प्रदान करने में सक्षम नहीं होते हैं, वे अक्सर अमूर्तता को तोड़ते हैं। SSHFS को बढ़ाने के लिए जो आवश्यक है - जब आप स्थानीय रूप से inotify चलाते हैं, तो उसे सर्वर को अनुरोध भेजने की आवश्यकता होती है, जो वहां पर inotify करता है, और क्लाइंट को वापस सूचनाएं भेजता है।
बमर

क्या आपने गमिन की जाँच की?
Janus Troelsen

@JanusTroelsen मैंने गामिन के बारे में नहीं सुना है। अपने अवलोकन पृष्ठ के अनुसार , यह भी inotify का उपयोग करता है। क्या यह नेटवर्क पर इस तरह के अपडेट वितरित करने के लिए उपयोगी है?
एको

जवाबों:


10

यह SSHFS फाइल सिस्टम SFTP प्रोटोकॉल के ऊपर बनाया गया है। SFTP केवल "शास्त्रीय" तरीकों से फाइलों में हेरफेर करने की सुविधा प्रदान करता है; क्लाइंट सर्वर से अनुरोध करता है (एक निर्देशिका सूची, एक फ़ाइल अपलोड करें, आदि), और सर्वर जवाब देता है। सर्वर के लिए इस प्रोटोकॉल में कोई सुविधा नहीं है कि ग्राहक को अनायास सूचित करें कि कुछ हुआ है।

इससे SSHFS के अंदर एक सुविधा प्रदान करना असंभव हो जाता है। एसएसएचएफएस को मालिकाना एक्सटेंशन के साथ विस्तारित करना या पूर्ण-विकसित एसएसएच कनेक्शन के साथ पूरक करना संभव होगा; लेकिन मुझे SSHFS के ऐसे किसी विस्तार का पता नहीं है।

समान कारणों से SSHFS के शीर्ष पर नामांकित पाइप को लागू नहीं किया जा सकता है। एनएफएस, शास्त्रीय नेटवर्केड फाइलसिस्टम, के पास पाइप नाम की क्रॉस-मशीन का समर्थन करने के लिए कोई सुविधा नहीं है। एक नेटवर्क फाइल सिस्टम पर, एक नामांकित पाइप प्रत्येक मशीन पर संचार का एक स्वतंत्र बिंदु बनाता है जहां यह घुड़सवार होता है (सर्वर के अतिरिक्त)।

FAM (SGI IRIX, जो लिनक्स में पोर्ट किया गया है) में एक इनोटिफ़ाइड एनालॉग है, एक डेमॉन प्रदान करता है जो सूचनाओं को नेटवर्क पर भेजने की अनुमति देता है। लिनक्स के बजाय FAM को अपदस्थ कर दिया गया है क्योंकि यह दृश्य में आया था, इसलिए मुझे नहीं पता कि FAM को चलाना आपके स्वयं के एप्लिकेशन-विशिष्ट सूचना प्रणाली को रोल करने से आसान होगा। आपको FAM और NFS के नेटवर्क लिंक को सुरक्षित करने के लिए SSH पर कुछ पोर्ट अग्रेषित करने या वीपीएन स्थापित करने की आवश्यकता होगी।

यदि आप अपना स्वयं का रोल करने का चुनाव करते हैं, तो यह मानते हुए कि आप ग्राहकों को शेल एक्सेस देने के साथ ठीक हैं, क्लाइंट की ओर से इनवॉइस मॉनिटर चलाना काफी आसान है: क्लाइंट को SSH कनेक्शन खोलें, और inotifywaitसर्वर पर कमांड चलाएं , क्लाइंट पर इसके आउटपुट को पार्स करना। आप एक ही क्लाइंट से एक ही सर्वर पर कई कनेक्शन खोलने के लिए इसे तेज करने के लिए एक मास्टर कनेक्शन सेट कर सकते हैं ।


1
कम से कम qemu क्रॉस-मशीन पाइप के एक प्रकार का समर्थन करता है: आभासी अतिथि के लिए एक पाइप
Janus Troelsen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.