क्या एक फाइलसिस्टम है जो एक फाइल की केवल एक प्रति रखता है, और अन्य प्रतियां सिर्फ संदर्भ हैं?


18

प्रश्न को स्पष्ट किया जा सकता है इसलिए मैं इसे और अधिक विस्तार से समझाने का प्रयास करूंगा।

कई कारणों से मेरे पास मेरे लिनक्स फाइल-सिस्टम पर एक ही फाइल की बहुत सारी प्रतियां हैं । उनमें से कई काफी बड़े हैं।

कहो कि मेरे पास /path/to/some.fileऔर इस फ़ाइल की प्रतियां हैं /other/path/file.nameऔर /yet/another/path/third.copy। मुझे आश्चर्य है कि अगर कोई फाइल-सिस्टम है जो मूल रूप से संदर्भ के रूप में इनमें से दो फाइलों को कार्य करेगा। स्वाभाविक रूप से, यदि उपयोगकर्ता उनमें से एक को संशोधित करता है, तो और केवल तब वे स्वतंत्र फाइलें बन जाते हैं।

पुनश्च। मुझे पता है कि यह (आंशिक रूप से) लिंक का उपयोग करके पूरा किया जा सकता है। लेकिन मैं चाहता हूं कि इस सुविधा को मैंने ऊपर समझाने की कोशिश की, जिसे फ़ाइल-सिस्टम द्वारा पारदर्शी रूप से नियंत्रित किया जाए।


चूंकि अभी तक एक सही जवाब नहीं लगता है, इसलिए स्क्रिप्ट नहीं लिखी जाती है (शायद क्रोन से चलती है) जो फाइलों को हार्ड लिंक से बदल देती है (या, अगर यह उनमें से कुछ के लिए सुरक्षित है, तो सिम्बलिंक्स)? किसी भी स्थिति में, यदि आपको पहले से पता नहीं है कि सभी डुप्लिकेट कहां हैं, तो fdupes code.google.com/p/fdupes देखें
जो

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

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

जवाबों:


17

इस सुविधा को समर्पण कहा जाता है । लोकप्रिय लिनक्स फाइल सिस्टम में से कोई भी (ext *) इसका समर्थन नहीं करता है, लेकिन जाहिर है, ZFS आंशिक रूप से इसका समर्थन करता हैफाइलसिस्टम लिस्टिंग की एक तालिका भी है , दूसरों के बीच, कटौती, लेकिन वहाँ कोई लोकप्रिय विकल्प नहीं दिखता है - यह Btrfs के लिए एक योजनाबद्ध विशेषता है, हालांकि।

मुझे लगता है कि समय-समय पर आपके फाइलसिस्टम की जाँच करना और उचित हार्ड लिंक बनाना सबसे अच्छा है जो आप इस समय कर सकते हैं, हालाँकि यह कॉपी-ऑन-राइट नहीं है।


मुझे उम्मीद है कि BTRFS के पास यह अल्राइड होगा। मुझे नहीं पता था कि उनके पास यह सुविधा है - अच्छी खबर! धन्यवाद!
डेजनलैकिक

10

आप जिस प्राथमिक कीवर्ड को देखना चाहते हैं, वह "राइट ऑन कॉपी" है। BTRFS में एक क्लोन ऑपरेशन होता है जो ठीक वही है जो आप चाहते हैं, और cp --reflinkवही करेंगे जो आप खोज रहे हैं, बशर्ते आपके सिस्टम में आधुनिक पर्याप्त कर्नेल और कोरुटील्स 7.5 हों। विकी स्रोत इसके अलावा, बेडअप एक ऐसा उपकरण है जो संपूर्ण मात्रा में डुप्लिकेट को मर्ज करेगा। CoW btrfs की स्नैपशॉट तकनीक, IIRC के नीचे की ड्राइविंग सुविधा भी है।


मुझे पता है cp --reflinkलेकिन ध्यान दें कि मैं वास्तव में चाहता हूं कि एफएस क्लोन का पता लगाए और इसके बजाय संदर्भों का उपयोग करें, पारदर्शी रूप से। मैं भी bedupउपकरण से दूर हूं ।
देजानलिक

जब एक उपयोगकर्ता-स्तरीय प्रक्रिया एक फ़ाइल से पढ़ती है और दूसरे को लिखती है, तो एफएस परत को कैसे पता चलेगा कि यह एक सटीक प्रतिलिपि है और संशोधित प्रतिलिपि नहीं है? इसलिए क्लोनिंग बनाम सिर्फ पढ़ने और लिखने के लिए एक अलग ioctl है। अनुप्रयोग जो फ़ाइलों को क्लोन करना चाहते हैं और सीओडब्ल्यू का उपयोग करना चाहते हैं, जब उपलब्ध हो तो ऐसी चीजों का उपयोग करना चाहिए और अन्यथा वापस गिरना चाहिए। कोई विश्वसनीय जादू पद्धति नहीं है जिसके द्वारा एफएस परत घटित होने वाली प्रतिलिपि का पता लगा सके और इसके बजाय सीओडब्ल्यू कर सके। ऐप को या तो नौकरी ( cp --reflink/ क्लोन) के लिए उचित कॉल का उपयोग करना चाहिए या बाद में (बेडअप) काम खत्म करने के लिए एक अलग टूल का उपयोग करना चाहिए ।
१६:१२ बजे १६:१२

हैश (अधिक सुरक्षित) या crc + टाइमस्टैम्प मूल्यों की तुलना करके। लिखें निश्चित रूप से FS फ़ाइल की एक स्वतंत्र प्रतिलिपि बनाने के लिए कारण होगा। फ़ुथर्मोर, इस प्रणाली को पृष्ठ स्तर पर लागू किया जाएगा ...
DejanLekic

और कहाँ वास्तव में कर्नेल में किया जाता है? आप जिस बारे में बात कर रहे हैं वह साधारण समस्या नहीं है। इसे पेज स्तर पर करना भी संभव है, लेकिन इनलाइन करने के लिए बड़े पैमाने पर रैम की आवश्यकता होती है - ZFS डेटा की प्रति टीबी 20 जीबी रैम से अधिक हो सकती है [स्रोत ], और ओपनडेडअप 8 जीबी रैम प्रति टीबी डेटा डब्ल्यू चाहता है। / 4k पृष्ठ [स्रोत ]। प्रदर्शन की कीमत पर L2ARC के साथ ZFS की आवश्यकताओं को कम किया जा सकता है।
afrazier

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

4

एक ऑनलाइन फाइल सिस्टम है S3QL जो बैकअप के लिए बड़ी क्षमता के साथ बैकअप के लिए डिज़ाइन किया गया है।


मुझे कहना चाहिए कि मुझे स्थानीय फाइल सिस्टम के लिए इसकी आवश्यकता है ... +1 वैसे भी उपयोगी जानकारी के लिए।
देवलीनिक

@DejanLekic, स्थानीय जैसे यूआरएल: // ... की अनुमति है।
डेनियल फंजुल

0

Zfs, btrfs, ext3cow, bcachefs (afaik, लेकिन ऐसा मौका है जो अभी तक लागू नहीं हुआ है)। Microsoft के विकास में एक था, लेकिन वे अज्ञात कारणों से रुक गए।

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