इंटरनेट पर एक फ़ाइल सिस्टम माउंट करना


11

मैंने एक वेब एप्लिकेशन बनाया जो मेरे एक ग्राहक के लिए वर्चुअल सर्वर पर चलता है। इसमें उनके लिए फ़ाइलें अपलोड करने की सुविधा शामिल है, लेकिन वे अब उन फ़ाइलों को अपने कार्यालय में एक सर्वर पर संग्रहीत करना चाहते हैं।

ऐसा करने का सबसे आसान तरीका यह होगा कि वर्चुअल सर्वर पर सीधे इंटरनेट पर उनकी फाइल सिस्टम को माउंट किया जाए। मुझे आंतरिक नेटवर्क पर बढ़ते एनएफएस का अनुभव है, लेकिन मैं स्पष्ट नहीं हूं कि यह इस परिदृश्य में काम करेगा या नहीं।

कोई विचार? मैं हमेशा फ़ाइलों को स्थानांतरित करने के लिए नया सॉफ्टवेयर लिख सकता हूं, लेकिन यह एक आसान फिक्स होगा!

नोट: कार्यालय में सर्वर उबंटू 12 सर्वर है जो एक वर्चुअल सर्वर पर विंडोज़ हाइपर-वी वातावरण में चल रहा है। वेब ऐप वाला VPS Ubuntu 11.04 है


क्या इन फ़ाइलों के लिए सुरक्षा एक समस्या है?
एड्रियन कोर्निश

क्रोन नौकरी के माध्यम से rsync।
इग्नासियो वाज़केज़-अब्राम्स

@ एड्रियनकोर्निश - वास्तव में नहीं, हालांकि एक सुरक्षित समाधान को प्राथमिकता दी जाएगी।

जवाबों:


12

अभी तक किसी ने भी sshfs का उल्लेख नहीं किया है। यदि आप एक आधुनिक लिनक्स डिस्ट्रो पर हैं और दूरस्थ होस्ट के लिए ssh की पहुँच है, तो यह उतना ही सरल है:

sshfs user@hostname:/remote/directory /local/directory

प्रदर्शन काफी स्वीकार्य है (लेकिन यदि आप पूरी निर्देशिका की आवश्यकता है तो rsync जैसे स्ट्रीम स्ट्रीम के रूप में तेज़ नहीं है)।


यह अब तक का सबसे अच्छा समाधान लगता है, यहां तक ​​कि अक्सर पूछे जाने वाले प्रश्न कहते हैं, "संसाधन धीमे और अविश्वसनीय (दूर) कनेक्शन पर लगाए जा सकते हैं।" एक अन्य वेबपेज ने मुझे बताया कि "sshfs -o reconnect server: / path / to / mount" यह स्वचालित रूप से फिर से कनेक्ट होगा यदि कनेक्शन ड्रॉप हो जाता है।

3

एनएफएस स्वाभाविक रूप से असुरक्षित है। यह इंटरनेट पर कनेक्ट करने के लिए एक बहुत ही खराब विकल्प होगा।

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

जब अपलोड पूरा हो जाता है, तो rsync फ़ाइल को उनके सर्वर पर किया जाता है।

आपको स्थानांतरण के लिए उनके सर्वर से एक सुरक्षित कनेक्शन स्थापित करने की आवश्यकता होगी, मुझे उम्मीद है।

यदि आप चाहते थे, तो आप आने वाली फ़ाइलों को सफल प्रतिलिपि के बाद नामों को हटाकर, स्थानांतरण के लिए एक सूची में डाल सकते थे और अपने आप को क्षमता से अधिक असफल होने पर दे सकते थे, यदि संबंध में कुछ होता है।

जैसा कि किसी और ने पहले ही बताया था, rsync को फ़ाइलों के समूह या एक पदानुक्रम (धन्यवाद, वर्तनी जांच) को संभालने के लिए डिज़ाइन किया गया है, इसलिए यह पूरा करना कठिन नहीं होगा।


1
rsync को परिवहन के रूप में SSH का उपयोग करने में कोई समस्या नहीं है।
इग्नासियो वाज़केज़-अब्राम्स

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

1

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

यदि फ़ायरवॉल को केवल एनएफएस माउंटपॉइंट से कनेक्ट करने के लिए एक विशिष्ट रिमोट होस्ट एड्रेस की अनुमति देने के लिए कॉन्फ़िगर किया गया है, तो एक नंगे एनएफएस कनेक्शन हैकिंग से ज्यादातर सुरक्षित है, सिवाय तीन पत्र एजेंसियों से जो इंटरनेट ट्रैफ़िक को सूँघते हैं, और जिनकी शक्तिशाली डिक्रिप्शन तक पहुंच होती है वैसे भी अपने एन्क्रिप्टेड दूरस्थ कनेक्शन दरार।

मैं देखता हूं कि एनएफएस के कुछ संस्करण डिफ़ॉल्ट रूप से यूडीपी का उपयोग करते हैं, जो कि संभावना है कि इंटरनेट विश्वसनीयता समस्याएं कहां से आती हैं। यदि कनेक्शन बंद हो जाता है, तो UDP पैकेट खो सकते हैं, और कोई भी पुनर्प्रयास स्वतः प्रयास नहीं किया जाता है। यदि आप एक विश्वसनीय कनेक्शन चाहते हैं, तो सुनिश्चित करें कि आपका एनएफएस इंटरनेट का उपयोग कर रहा है (या केवल उपयोग करने के लिए मजबूर है) टीसीपी पैकेट।


1
> टेलनेट और एफ़टीपी भी स्वाभाविक रूप से असुरक्षित हैं लेकिन दोनों का उपयोग खुले इंटरनेट पर दशकों से किया जा रहा है, हालांकि सच है, मुझे नहीं लगता कि यह एक अच्छा बिंदु है, क्योंकि आमतौर पर इसे इंटरनेट पर इस्तेमाल करने के लिए एक (बहुत) बुरा अभ्यास माना जाता है अभी। मोज़िला यहां तक ​​कि अनएन्क्रिप्टेड http को अपग्रेड करने का सुझाव देता है ।
इयान डी। स्कॉट

0

एनएफएस एक फ़ायरवॉल के माध्यम से किया जा सकता है। यदि आप खोज करते हैं, तो आपको ऐसे अन्य लोग मिलेंगे, जिन्होंने इस प्रक्रिया के साथ प्रयास किया और सफल रहे, हालांकि, यह पोर्ट खोलने के समान सीधा नहीं है और एनएफएस के चलने के संस्करण पर निर्भर प्रतीत होता है।

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

ssh एक और सुरक्षित विकल्प होगा और इसे खोलने के लिए केवल एक पोर्ट की आवश्यकता होगी। मैंने इसका उपयोग विन्डोज़ और लिनक्स सिस्टम के बीच अतीत में किया है और इस प्रक्रिया को शेड्यूल करने के साथ-साथ एक ऐप के भीतर से भी अच्छा काम किया है।

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


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

0

एनएफएस माउंट को ऑटोमाउंट का उपयोग करके किया जा सकता है, जो असफलता पर माउंट का प्रयास करना जारी रखेगा, लेकिन जिस तरह से मैं पाइप पर इसका उपयोग करने पर विचार करूंगा वह वीपीएन या किसी अन्य सुरक्षित कनेक्शन के साथ है (वास्तव में, मैं इस पर विचार नहीं करूंगा, लेकिन आप इस विचार पर तय करते हैं)।

ऑटोमाउंट का उपयोग करते हुए भी, यदि कोई नेटवर्क समस्या है, और आप उनके अपलोड एनएफएस माउंट पर रख रहे हैं, तो अपलोड विफल हो जाएगी या दूषित हो जाएगी, जब तक कि आप फ़ाइल को स्थानीय रूप से संग्रहीत नहीं कर रहे हैं और फिर अपलोड सफलता पर कॉपी कर रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.