मेरा उद्देश्य पर्याप्त i / o का उत्पादन किए बिना और न ही अतिरिक्त डिस्क स्थान का उपयोग किए बिना कई 9GB फ़ाइल में कई 3GB फ़ाइलों को संयोजित करने के लिए btrfs सुविधाओं का उपयोग करना है। यदि यह डेटा के इस सेट के लिए काम करता है, तो मैं इसे अपनी पाइपलाइन में लागू करने की योजना बनाता हूं और आसानी से डिस्क स्थान की टेराबाइट को बचा सकता हूं।
मेरे पिछले प्रयास:
आम तौर पर मैं cat
इन छोटी 3GB फ़ाइलों को एक ही फ़ाइल में बनाता हूं , जो बहुत सारे i / o का उत्पादन करता है। Btrfs पर मैंने डिस्क स्पेस को बचाने के लिए इन फाइलों पर duperemove की कोशिश की। यह जो केवल बड़ी फ़ाइल के पहले अनुपात के लिए काम करता है, प्रभावी रूप से मुझे 9GB में से 3GB की बचत करता है (जो अच्छा है)।
एक ही परिणाम के साथ एक बेहतर तरीका cp --reflink=always
पहली फ़ाइल पर उपयोग करना होगा , और फिर दूसरों को जोड़ना होगा। यह पर्याप्त रूप से तेज़ होगा और समय-समय पर कटौती कदम का उपभोग करता है, फिर भी मैं अभी भी 6GB i / o और अतिरिक्त डिस्क स्थान का उत्पादन करता हूं।
मैं अब इन फ़ाइलों को संयोजित करने के लिए btrfs सुविधाओं का उपयोग करने का एक तरीका ढूंढ रहा हूं, जैसे कि वे एक-दूसरे पर संक्षिप्त रूप से अभी तक बी-ट्री में मूल सीमा का उल्लेख कर रहे हैं। (अगर मेरी btrfs की समझ सही है)
आपके विचार के लिए धन्यवाद
cp --reflink
btrfs
( यहाँ देखें ) पर ठीक काम करता है , लेकिन यह थोड़ा अलग उद्देश्य से कार्य करता है। बेशक यदि आप पहले से जानते हैं कि डेटा समान है, तो इसका उपयोग करें। लेकिन btrfs
(या बेहतर कहना, एक विशेष उपयोगिता) डी-डुप्लीकेशन प्रक्रिया को पोस्ट-फैक्टम ( btrfs wiki देखें ) चला सकती है। मैंने कभी भी उस उपयोगिता का उपयोग नहीं किया है, हालांकि मैं कल्पना कर सकता हूं कि पूरे फाइलसिस्टम में डुप्लिकेट ब्लॉक खोजने में थोड़ा समय लगेगा।
btrfs
एक फाइलसिस्टम है, फाइलों को मिलाने का उपकरण नहीं। या आपका मतलब है कि आपके पास तीन फाइलें हैं, और उनमें से शीर्ष पर आप एक फाइल सिस्टम बनाना चाहते हैं?