मैंने बेडअप की कोशिश की। हालांकि अच्छा (और कुछ उपयोगी विभेदित विशेषताएं हैं जो इसे कई लोगों के लिए सबसे अच्छा विकल्प बना सकती हैं), यह चेकसम के लिए सभी लक्ष्य फ़ाइलों की संपूर्णता को स्कैन करने के लिए लगता है।
जो दर्द से धीमा है।
दूसरी ओर अन्य कार्यक्रम, जैसे कि rdfind और rmlint, अलग तरह से स्कैन करते हैं।
rdfind में btrfs reflink का उपयोग करने के लिए "प्रयोगात्मक" सुविधा है। (और हार्डलिंक, सिमिलिंक आदि के लिए "ठोस" विकल्प)
rmlint में btrfs क्लोन, रिफ्लिन, नियमित हार्डलिंक, सिमिलिंक, डिलीट और अपने स्वयं के कस्टम कमांड के लिए "ठोस" विकल्प हैं।
लेकिन इससे भी महत्वपूर्ण बात यह है कि rdfind और rmlint काफी तेज हैं। जैसा कि, परिमाण के आदेश। चेकसम के लिए सभी लक्ष्य फ़ाइलों को स्कैन करने के बजाय, यह ऐसा करता है, लगभग:
- पूरे पथ और फाइल को इकट्ठा करते हुए, पूरे लक्ष्य फाइल सिस्टम को स्कैन करें।
- विचार से निकालें, अद्वितीय filesizes के साथ फ़ाइलें। यह अकेले, समय और डिस्क गतिविधि के स्कैड को बचाता है। ("स्कैड्स" कुछ व्युत्क्रम घातीय फ़ंक्शन या कुछ है।)
- शेष उम्मीदवारों में से, पहले एन बाइट्स को स्कैन करें। विचार से निकालें, एक ही फाइल वाले, लेकिन अलग-अलग पहले एन बाइट्स।
- अंतिम एन बाइट्स के लिए भी यही करें।
- केवल उस (आमतौर पर छोटे अंश) शेष, चेकसम के लिए स्कैन करें।
Rmlint के अन्य लाभों से मैं अवगत हूँ:
- आप चेकसम निर्दिष्ट कर सकते हैं। md5 भी डरावना? Sha256 की कोशिश करो। या 512. या बिट-फॉर-बिट तुलना। या आपका अपना हैशिंग फंक्शन है।
- यह आपको केवल रिफ़्लेकिन के बजाय Btrfs "क्लोन", और "रीलिंक" का विकल्प देता है। "cp --reflink = हमेशा" बस थोड़ा जोखिम भरा है, इसमें यह परमाणु नहीं है, यह पता नहीं है कि कर्नेल में उस फ़ाइल के लिए और क्या चल रहा है, और यह हमेशा मेटाडेटा को संरक्षित नहीं करता है। "क्लोन", ओटीओएच (जो एक शॉर्टहैंड शब्द है ... मैं आधिकारिक एपीआई-संबंधित नाम पर रिक्त कर रहा हूं), एक कर्नेल-स्तरीय कॉल है जो परमाणु है और मेटाडेटा को संरक्षित करता है। लगभग हमेशा एक ही चीज़ के परिणामस्वरूप, लेकिन एक बालक अधिक मजबूत और सुरक्षित है। (हालांकि अधिकांश प्रोग्राम डुप्लिकेट फ़ाइल को न हटाने के लिए पर्याप्त स्मार्ट हैं, अगर यह पहले दूसरे से एक अस्थायी रीफ़्लिंक को सफलतापूर्वक नहीं बना सकता है।)
- इसमें कई उपयोग-मामलों के लिए एक टन विकल्प है (जो एक दोष भी है)।
मैंने डिफ्यूपरमेव के साथ rmlint की तुलना की - जो आँख बंद करके चेकसम के लिए हर लक्ष्य फ़ाइल को स्कैन करता है। Duperemove ले लिया कई दिनों पूरा करने के लिए अपने मात्रा पर (4 मुझे लगता है कि), पूर्ण झुकाव जा रहा है। fmlint ने डुप्लिकेट की पहचान करने में कुछ घंटों का समय लिया , फिर उन्हें Btrfs क्लोन के साथ तैयार करने में एक दिन से भी कम समय लगा।
(यह कहा, किसी को भी लिखने का प्रयास और गुणवत्ता, मजबूत सॉफ्टवेयर का समर्थन और मुक्त करने के लिए दूर दे, प्रमुख यश के हकदार हैं!)
Btw: आपको हर कीमत पर "हार्ड" सामान्य समाधान के रूप में नियमित हार्डलिंक का उपयोग करने से बचना चाहिए।
हालांकि हार्डलिंक कुछ लक्षित उपयोग के मामलों में अत्यंत उपयोगी हो सकता है (जैसे व्यक्तिगत फ़ाइलें या एक उपकरण के साथ जो विशिष्ट फ़ाइल प्रकारों को कुछ न्यूनतम आकार से अधिक के लिए स्कैन कर सकता है - या कई मुफ्त और व्यावसायिक बैकअप / स्नैपशॉट समाधानों के हिस्से के रूप में), यह विनाशकारी हो सकता है। एक बड़े सामान्य उपयोग फाइलसिस्टम पर "डिडुप्लीकेशन" के लिए। कारण यह है कि अधिकांश उपयोगकर्ताओं के पास अपने फाइल सिस्टम पर हजारों फाइलें हो सकती हैं , जो कि बाइनरी समान हैं, लेकिन कार्यात्मक रूप से पूरी तरह से अलग हैं।
उदाहरण के लिए, कई प्रोग्राम टेम्पलेट और / या छिपी सेटिंग्स फ़ाइलें उत्पन्न करते हैं (कभी-कभी प्रत्येक एकल फ़ोल्डर में यह देख सकते हैं), जो शुरू में समान हैं - और अधिकांश तब तक बने रहते हैं, जब तक कि आप, उपयोगकर्ता को उनकी आवश्यकता न हो।
एक विशिष्ट चित्रण के रूप में: फोटो थंबनेल कैश फाइलें, जो अनगिनत प्रोग्राम फोटो युक्त फ़ोल्डर में उत्पन्न होती हैं (और अच्छे कारण के लिए - पोर्टेबिलिटी), उत्पन्न करने में घंटों या दिनों का समय ले सकती हैं लेकिन फिर फोटो ऐप का उपयोग करके हवा बना सकते हैं। यदि उन प्रारंभिक कैश फ़ाइलों को एक साथ सभी हार्डलिंक किया जाता है, तो आप बाद में एक निर्देशिका पर ऐप खोलते हैं और यह एक बड़ी कैश बनाता है ... तब अनुमान लगाते हैं: अब हर फ़ोल्डर जिसमें पहले हार्डलिंक कैश है, अब गलत कैश है। संभावित रूप से, विनाशकारी परिणामों के साथ जिसके परिणामस्वरूप आकस्मिक डेटा विनाश हो सकता है। और एक तरह से संभावित रूप से एक बैकअप समाधान भी है जो हार्डलिंक-जागरूक नहीं है।
इसके अलावा, यह पूरे स्नैपशॉट को बर्बाद कर सकता है। स्नैपशॉट का पूरा बिंदु इतना है कि "लाइव" संस्करण को बदलना जारी रख सकते हैं, जिसमें पिछली स्थिति में वापस रोल करने की क्षमता है। अगर सब कुछ एक साथ हार्डलिंक किया जाता है, तो ... आप एक ही चीज़ के लिए "रोल बैक" करते हैं।
हालांकि अच्छी खबर यह है कि Btrfs क्लोन / रिफलिंक के साथ कटौती, उस क्षति को पूर्ववत कर सकती है (मुझे लगता है - स्कैन के दौरान, इसे हार्डलिंक की गई फ़ाइलों को समान रूप से देखना चाहिए ... जब तक कि इसमें हार्डलिंक पर विचार न करने का तर्क न हो। यह संभवतः निर्भर करता है। विशिष्ट उपयोगिता जो कर रही है।)