"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ## आप विरल फ़ाइलों को बिना विस्तारित किए कैसे कॉपी करते हैं?

## आप विरल फ़ाइलों को बिना विस्तारित किए कैसे कॉपी करते हैं?

2024-11-08 को प्रकाशित
ब्राउज़ करें:494

## How Do You Copy Sparse Files Without Expanding Them in Go?

Sparse फ़ाइलें io.Copy() के साथ विशाल हो जाती हैं

समस्या

io.Copy() का उपयोग करके विरल फ़ाइलें कॉपी करते समय, वे अक्सर फूल जाती हैं गंतव्य पर आकार में नाटकीय रूप से।

विरल की प्रकृति को समझना Files

io.Copy() कच्चे बाइट्स को स्थानांतरित करता है, जो एक विरल फ़ाइल में छिद्रों की उपस्थिति को छुपाता है - वे स्थान जहां वास्तव में कोई डेटा नहीं रहता है। यह जानकारी रीड(2) जैसे मानक सिस्कॉल के माध्यम से पहुंच योग्य नहीं है। इस प्रकार, io.Copy() फ़ाइलों की विरलता को संरक्षित करने में असमर्थ है।

समस्या से निपटना

इसे संबोधित करने के लिए, हमें सिस्कल पैकेज और मैन्युअल हैंडलिंग का उपयोग करके गहराई से जांच करने की आवश्यकता है। Lseek(2) सिस्टम कॉल, विशेष SEEK_HOLE और SEEK_DATA मानों के साथ, फ़ाइलों में छेद में हेरफेर करने के लिए उपयोग किया जा सकता है। फ़ाइल।

लक्ष्य के लिए विशिष्ट SEEK_HOLE और SEEK_DATA मान निर्धारित करें प्लेटफ़ॉर्म।

    डेटा-युक्त क्षेत्रों से पढ़ें और छेद वाले क्षेत्रों को अनदेखा करें।
  1. स्पार्स फ़ाइल स्थानांतरण के लिए विचार
  2. यदि आप इस दौरान किसी फ़ाइल की विरलता बनाए रखना चाहते हैं स्थानांतरण, स्थिति अधिक जटिल है. समर्थित फ़ाइल सिस्टम पर छेद निर्माण का प्रयास करने के लिए फ़ॉलोकेट (2) का उपयोग किया जा सकता है। हालाँकि, कुछ फाइल सिस्टम में स्वाभाविक रूप से छेद समर्थन की कमी होती है, जैसे कि FAT परिवार। यदि ऐसा है, तो कॉपी करने के बजाय syscall.Rename() या os.Rename() का उपयोग करने से फ़ाइल के आकार और विशेषताओं को संरक्षित किया जा सकता है।
टार फ़ाइलों में विरल फ़ाइल प्रबंधन के बारे में अधिक जानकारी के लिए गो अंक #13548 देखें।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3