क्यों टार cp की तुलना में बहुत तेज है?


10

किसी निर्देशिका को पुन: कॉपी करने के tarलिए , किसी निर्देशिका को पैक करने के लिए उपयोग करना और फिर आउटपुट को दूसरे tarसे अनपैक करने के लिए उपयोग करना cp -r(या cp -a) की तुलना में बहुत तेज़ प्रतीत होता है ।

ऐसा क्यों है? और cpहुड के नीचे उसी तरह से तेजी से क्यों नहीं बनाया जा सकता है?

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


यह एक दिलचस्प सवाल है। आप यहाँ कुछ उत्तर पा सकते हैं: stackoverflow.com/questions/316078 और यहाँ: unix.stackexchange.com/questions/66647
टेरेसा ई जूनियर

जवाबों:


6

Cpसभी फाइलों पर एक लूप में खुले-पढ़ने-बंद-खुले-लिखने-बंद करता है। इसलिए एक स्थान से दूसरे स्थान पर पढ़ना और लिखना पूरी तरह से परस्पर संवाद होता है। Tar|tarअलग-अलग प्रक्रियाओं में पढ़ना और लिखना, और इसके अलावा tarकई थ्रेड्स का उपयोग (और लिखना) कई फाइलें 'एक बार में' करता है, प्रभावी रूप से डिस्क नियंत्रक को एक साथ डेटा के कई ब्लॉकों को लाने, संग्रहीत करने और संग्रहीत करने की अनुमति देता है। सभी सभी, tarप्रत्येक घटक को कुशलतापूर्वक काम करने की अनुमति देता है, जबकि cpअसमान रूप से, छोटे-छोटे विखंडू में समस्या को तोड़ता है।


क्या हम वास्तव में कह सकते हैं कि यह सभी cpकार्यान्वयनों के लिए सही है ? हम कैसे जानते हैं कि यह सच है? और cpइतने अयोग्य तरीके से क्यों लिखा जाएगा? किसी फाइल कॉपी का कोई भी पाठ्यपुस्तक कार्यान्वयन एक बार में n बाइट्स के बफर को पढ़ता है, और दूसरे n बाइट्स को पढ़ने से पहले उन्हें डिस्क पर लिखता है। लेकिन आप कह रहे हैं कि cpपूरी कॉपी लिखने से पहले पूरी फाइल को हमेशा पढ़ें?
लार्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.