कई अलग-अलग फ़ाइलों में फैले डेटा की समान मात्रा को कॉपी करने में अधिक समय क्यों लगता है?


11

मैंने देखा कि एक फ़ोल्डर से दूसरे में 24Mb मूल्य के डेटा को कॉपी करने में लगभग 30 सेकंड का समय लगता है क्योंकि (मुझे लगता है कि यही कारण है) यह 1,000 से अधिक अलग-अलग फाइलों में था। 24Mb कॉपी करना इतना लंबा समय नहीं लेना चाहिए। फ़ाइलों की संख्या अलग क्यों होती है?

मैं मैकबुक पर विंडोज 7 चला रहा हूं (4 जीबी रैम, इंटेल (आर) कोर (टीएम) 2 डुओ सीपीयू P7450 @ 2.13GHz, 32-बिट ऑपरेटिंग सिस्टम)

EDIT: NTFS ड्राइव पर इस्तेमाल किया जाने वाला फाइल सिस्टम है

जवाबों:


5

एचडीडी में एक सटीक स्थानांतरण दर नहीं है, यह उचित रखरखाव पर निर्भर करता है, अर्थात यह खंडित नहीं है, और न ही खराब क्षेत्र, आदि ...

यदि HDD SATA 2 है और यह समान विभाजन है, तो यह केवल डेटा ट्रांसफर की गति है।

यदि एक ही एचडीडी में दो विभाजन हैं, तो बस और मदरबोर्ड के बीच इस डेटा ट्रांसफर की आवश्यकता नहीं है, अर्थात यह बफर में लोड होता है। (तब hdd बफर आकार पर निर्भर करता है।)

लेकिन कॉपी की गई हर फ़ाइल के लिए, सिस्टम को HDD के MFT (मास्टर फ़ाइल टेबल) में अपना इंडेक्स रखना चाहिए, जो कई फ़ाइलों को कॉपी करने पर कॉपी करने की प्रक्रिया को धीमा कर देता है। और यदि आपके पास कोई एंटी-वायरस है, तो यह कॉपी की गई प्रत्येक फ़ाइल को स्कैन करेगा। और यदि आपने microsoft search file indexing (या किसी अन्य फाइल इंडेक्सिंग सर्विस) को इनेबल किया है, तो परिणाम और खराब होगा।

मुझे लगता है कि कई अन्य कारणों से कई फाइलों की प्रतिलिपि धीमी होनी चाहिए, लेकिन ये मुख्य होनी चाहिए।


एंटीवायरस प्रोग्राम को अक्षम करने से एक्सट्रैक्ट 10x तेज हो गया। इसके बाद वायरस के लिए फाइलें स्कैन कीं।
fat_mike

28

फ़ाइलों की संख्या अलग क्यों होती है?

जाहिरा तौर पर आप "डेटा की प्रतिलिपि" पहलू "एक फ़ाइल की प्रतिलिपि बनाएँ" पर पूरी तरह से ध्यान केंद्रित कर रहे हैं। एक फ़ाइल सिर्फ डेटा से अधिक है; यह एक फाइल सिस्टम में एक इकाई है । एक फ़ाइल का एक नाम और विशेषताएँ और अनुमतियां हैं। फ़ाइल के बारे में यह सभी अतिरिक्त जानकारी "फ़ाइल की प्रतिलिपि बनाई गई" होने पर डेटा के साथ डुप्लिकेट करना पड़ता है। इस फाइल सिस्टम को ओवरहेड करने के लिए डिस्क I / O की एक महत्वपूर्ण मात्रा है।

जेनेरिक फाइल सिस्टम में एक (1) फाइल को कॉपी करने की प्रक्रिया कुछ इस तरह होगी:

  • फ़ाइल सिस्टम में स्रोत फ़ाइल ढूँढें। (ए)
  • स्रोत फ़ाइल के लिए निर्देशिका प्रविष्टि डिस्क से पढ़ें।
  • पठन अनुमतियाँ सत्यापित करें।
  • फ़ाइल सिस्टम में गंतव्य फ़ाइल ढूँढें। (ख)
  • गंतव्य निर्देशिका में लेखन अनुमतियाँ सत्यापित करें।
  • नई फ़ाइल को समायोजित करने के लिए यदि आवश्यक हो तो निर्देशिका का विस्तार करें। (सी)
  • डिस्क पर निर्देशिका को अपडेट करें। (C1)
  • निःशुल्क ब्लॉक ढूंढें, उन्हें आवंटित करें और तालिका को फिर से अपडेट करें। (घ)
  • फ़ाइल डेटा पढ़ें और गंतव्य फ़ाइल पर कॉपी करें (यानी "फ़ाइल की प्रतिलिपि बनाएँ")।
  • नई फ़ाइल (आकार और समय) के लिए निर्देशिका प्रविष्टि को अपडेट करें। (ई)
  • स्रोत निर्देशिका प्रविष्टि के एक्सेस समय को अपडेट करें। (च)

(ए) बहुत कम से कम इसका मतलब है कि वर्तमान निर्देशिका खोजना। या फ़ाइल सिस्टम के रूट पर पथ शुरू हो सकता है, और निर्देशिकाओं के कई स्तरों का पता लगाना होगा।

(b) बहुत कम से कम इसका मतलब है कि वर्तमान निर्देशिका को खोजना। या फ़ाइल सिस्टम के रूट पर पथ शुरू हो सकता है, और निर्देशिकाओं के कई स्तरों का पता लगाना होगा। यदि गंतव्य फ़ाइल पहले से मौजूद है, तो यह निर्धारित करें कि प्रतिलिपि कैसे आगे बढ़े या गर्भपात करे। यदि गंतव्य फ़ाइल मौजूद नहीं है, तो एक नई निर्देशिका प्रविष्टि बनाई जानी चाहिए, और शायद इसमें निर्देशिका का विस्तार करना शामिल है (यानी फ़ाइल ब्लॉक (उर्फ क्लस्टर) आवंटन उपरि )।

(c) यदि निर्देशिका का विस्तार करना है, तो एक निशुल्क ब्लॉक ढूंढकर एक नया ब्लॉक आवंटित करें, नए आवंटन के साथ आवंटन तालिका को संशोधित करें, और फिर डिस्क को ब्लॉक (ओं) लिखें । चूंकि अधिकांश फाइल सिस्टम आवंटन तालिका की कई प्रतियों को बनाए रखते हैं, तो इसका मतलब है कि कई डिस्क पर लिखते हैं।
(c1) गंतव्य निर्देशिका स्थित होने के बाद, डिस्क से निर्देशिका ब्लॉक पढ़ें , इसे कॉपी की गई फ़ाइल के लिए नई निर्देशिका प्रविष्टि के साथ संशोधित करें और फिर ब्लॉक को डिस्क पर लिखें

(d) फ़ाइल की प्रतिलिपि बनाने के लिए, नि: शुल्क ब्लॉक ढूंढकर ब्लॉक आवंटित करें, नए आवंटन के साथ आवंटन तालिका को संशोधित करें, और फिर ब्लॉक (ओं) को डिस्क पर लिखें । चूंकि अधिकांश फाइल सिस्टम आवंटन तालिका की कई प्रतियों को बनाए रखते हैं, तो इसका मतलब है कि कई डिस्क पर लिखते हैं। डेटा अखंडता को बनाए रखने के लिए, फ़ाइल सिस्टम निर्देशिकाओं और आवंटन तालिकाओं के लिए डिस्क लिखने (देरी और मर्ज) को लिखने का प्रयास नहीं कर सकता है , बल्कि नई फ़ाइलों को बनाए जाने और आवंटित किए गए ब्लॉक को तुरंत लिखने का कार्य करता है।

(e) डेटा कॉपी संकलित होने के बाद, उचित फ़ाइल की लंबाई और टाइमस्टैम्प के साथ प्रतिलिपि की गई फ़ाइल के लिए नई निर्देशिका प्रविष्टि को अपडेट करें, और फिर निर्देशिका ब्लॉक को डिस्क पर लिखें

(च) एक नई "पहुंच" टाइमस्टैम्प के साथ स्रोत निर्देशिका प्रविष्टि को अपडेट करें और फिर डिस्क को निर्देशिका ब्लॉक लिखें

तो सिर्फ एक फ़ाइल के बजाय, आपका सवाल यह पूछ रहा है कि क्या एक हजार फ़ाइलों के लिए यह सब सामान करने में लगने वाले समय को फाइलों के डेटा हिस्से को कॉपी करने में लग सकता है? यदि आप 24MB की सिर्फ एक फाइल कॉपी करते हैं, तो आपके पास एक हजार फाइलों के अपने कॉपी समय के साथ तुलना करने के लिए कुछ होगा।

जब एक फाइलसिस्टम का बैकअप लिया जाता है, तो डिस्क या विभाजन पर किसी अन्य फाइल सिस्टम में अलग-अलग फाइलों को कॉपी करना शायद ही कभी नियोजित होता है क्योंकि यह एक धीमी प्रक्रिया है जैसा कि आपने खोजा है। एक तेज़ विधि एक एकल संग्रह फ़ाइल बनाना और लिखना है जो विशेष निर्देशिका में स्रोत निर्देशिका प्रविष्टियाँ और फ़ाइल सामग्री रखती है; बैकअप प्रोग्राम और * निक्स कमांड 'टार' ऐसी आर्काइव फाइल को आउटपुट कर सकते हैं। (ध्यान दें कि 'टार' सिर्फ आर्काइव फ़ाइलों को संभालती है और अभिलेखीय + संपीड़न उपयोगिताओं जैसी संपीड़न का उपयोग नहीं करती है।) बैकअप का सबसे तेज़ तरीका एक ब्लॉक डिवाइस (एक डिवाइस पर एक फाइलसिस्टम के बजाय) को लिखना है, ताकि स्रोत फाइलसिस्टम हो उपेक्षित (अधिक डेटा के रूप में माना जाता है) और स्रोत डिवाइस की एक ब्लॉक-बाय-ब्लॉक छवि प्रति का प्रदर्शन किया जा सकता है।


-1

यहाँ एक वैचारिक सादृश्य है:

(कृपया याद रखें कि प्रिय इंटरनेट, कि उपमाएं त्रुटिपूर्ण हैं। बेझिझक टिप्पणी में कैसे इंगित करें।)

मान्यताओं:

  • जानकारी के एजेंट कुछ बच्चे को स्थानांतरित == करते हैं, चलो उसे सैम कहते हैं, एक टोकरी से दूसरे टोकरी में अंडे स्थानांतरित कर रहा है।
  • सूचना स्थानांतरण वायु का माध्यम == मुझे लगता है। यहाँ वास्तव में महत्वपूर्ण नहीं है।
  • अंडे विभिन्न प्रजातियों से आते हैं, जैसे ... डायनासोर ... और पौराणिक पानी के नीचे के समुद्री जानवर और ड्रेगन। (अंडे वास्तव में बड़े हो सकते हैं)
  • फ़ाइल का आकार == अंडा-वॉल्यूम। रॉबिन के अंडे बनाम ड्रैगॉन के अंडे के बारे में सोचें।

सादृश्य:

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

  • एक रॉबिन का अंडा 100 bytesटोकरी में अंतरिक्ष की तरह ऊपर ले जा रहा है

सेवा मेरे

  • क्रैंक-अंडे, चारों ओर आकार 2.7Gb

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

सैम एक मूर्ख है।

सैम एक और अंडा हथियाने के लिए अपनी पहली टोकरी में वापस चला जाता है। उसे पता चलता है कि उसके पास वास्तव में केवल 1 बड़ा था। हालांकि, 100,000,000,000 रॉबिन के अंडे बचे हैं।

जैसा कि आप देख सकते हैं, सैम की दोपहर बर्बाद हो गई है। उनका स्वाभाविक झुकाव यह होगा कि डिनो-अंडे को उनके लिए आगे बढ़ने के लिए बदतर होना चाहिए। यह समझ में आता है जब हम अंडे और टोकरी के बारे में बात करते हैं, लेकिन कंप्यूटर 100,000,000,000 की संख्या में सौदा करते हैं।

संक्षेप में:

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


-2

FAT, री-पोजीशन हेड्स, फाइल बदलने पर ओपन फाइल पढ़ें - यह सब समय की आवश्यकता है


यह एक NTFS ड्राइव है
ट्रिंडाज़

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

तो क्या आपका जवाब इस तथ्य पर आधारित है कि फ़ाइल नाम, स्थान, आकार, अनुमति आदि के लिए रिकॉर्ड बनाने के लिए उसे बहुत अतिरिक्त काम करना पड़ता है? यहीं से सारा अतिरिक्त काम आता है।
ट्रिंडाज़

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