दोनों फाइलों पर CRCs (या, बेहतर, sha1sums) की गणना करना वैसे भी हर बाइट को पढ़ने की आवश्यकता है। यदि आप एक बाइट-बाय-बाइट तुलना करते हैं, तो आप जैसे ही मिसमैच देखते हैं, वैसे ही छोड़ सकते हैं - और आपको दो अलग-अलग फ़ाइलों के बारे में चिंता करने की ज़रूरत नहीं है जो एक ही चेकसम की होती हैं (हालांकि यह शमसम के लिए गायब होने की संभावना नहीं है) । इसलिए यदि आप तुलनात्मक रूप से तुलना कर रहे हैं, तो बाइट-बाय-बाइट की तुलना कम से कम एक चेकसम तुलना के रूप में तेज़ होगी (जब तक कि आपने पहले से चेकसम की गणना नहीं की है)।
दूसरी ओर, जब आप एक ही मशीन पर नहीं हैं फ़ाइलों की तुलना कर रहे हैं, तब चेकसम तुलना उपयोगी होती है; चेकसम स्थानीय रूप से गणना की जा सकती है, और आपको नेटवर्क पर संपूर्ण सामग्री को स्थानांतरित करने की आवश्यकता नहीं है।
हाइब्रिड दृष्टिकोण भी संभव हैं। उदाहरण के लिए, आप एक बार में दो फ़ाइलों के लिए चेकसम की गणना और तुलना कर सकते हैं, जो पूरी फ़ाइलों ( यदि वे भिन्न हैं) को पढ़ने से बच सकते हैं, जबकि पूरे नेटवर्क में संपूर्ण फ़ाइल को प्रसारित करने से भी बच सकते हैं। Rsync प्रोटोकॉल कुछ इस तरह से करता है।
ध्यान दें कि एक साधारण सीआरसी का उपयोग करने से आपको टक्कर का एक उचित मौका मिलता है, जैसा कि डेव रैगर ने अपने उत्तर में उल्लेख किया है। कम से कम sha1sum का उपयोग करें , या हाल ही में कुछ और भी। (अपने स्वयं के हैशिंग एल्गोरिथ्म का आविष्कार करने की कोशिश न करें; जो लोग sha1sum विकसित करते हैं वे इस सामान के बारे में हम दोनों में से कहीं अधिक जानते हैं।)
टक्कर की संभावना के लिए, यदि आप sha1sum की तरह एक सभ्य हैश का उपयोग करते हैं, तो आपको इसके बारे में चिंता करने की ज़रूरत नहीं है, जब तक कि कोई जानबूझकर और महंगी रूप से फ़ाइलों का निर्माण नहीं कर रहा है, जिनके sha1sums टकराते हैं (इस तरह की टक्कर पैदा करना संभव नहीं था , जब मैंने पहली बार यह लिखा था। , लेकिन प्रगति की जा रही है )। स्कॉट चाकोन के "प्रो गिट" को उद्धृत करते हुए , खंड 6.1 :
यहां एक उदाहरण दिया गया है जिससे आपको अंदाजा हो सकता है कि SHA-1 टक्कर लेने में क्या होगा। यदि पृथ्वी पर सभी 6.5 बिलियन मानव प्रोग्रामिंग कर रहे थे, और हर दूसरे, हर एक कोड का उत्पादन कर रहा था जो पूरे लिनक्स कर्नेल इतिहास (1 मिलियन गिट ऑब्जेक्ट) के बराबर था और इसे एक विशाल गिट रिपॉजिटरी में धकेल दिया, तो 5 साल तक लगेंगे उस भंडार में एक SHA-1 ऑब्जेक्ट के टकराव की 50% संभावना होने के लिए पर्याप्त वस्तुएं थीं। एक उच्च संभावना मौजूद है कि आपकी प्रोग्रामिंग टीम के प्रत्येक सदस्य को उसी रात असंबंधित घटनाओं में भेड़ियों द्वारा हमला और मार दिया जाएगा।
सारांश :
बाइट-दर-बाइट तुलना स्थानीय तुलना के लिए अच्छी है। sha1sum रिमोट तुलना के लिए अच्छा है, और झूठी सकारात्मकता का कोई महत्वपूर्ण मौका नहीं देता है।