पैट्रिक कम या ज्यादा सही है, लेकिन यहाँ क्यों है। जिस तरह से आप UNIX के तहत फाइल कॉपी करते हैं वह इस तरह से काम करता है:
- कुछ (अधिक) बाइट्स पढ़ने की कोशिश करें
fileA
।
- यदि हम बाइट प्राप्त करने में विफल रहे हैं क्योंकि हम फ़ाइल के अंत में (या पिछले) हैं, तो हम कर रहे हैं; छोड़ दिया।
- अन्यथा,
fileB
चरण 1 पर बाइट्स और लूप को वापस लिखें ।
उसको जानना, और यह जानना उतना ही सरल है, इससे हमें कुछ कोने के मामले देखने को मिलते हैं।
जैसे ही हमें फाइल का अंत पता चलता है, कॉपी हो जाती है। तो मान लें कि हमारी फ़ाइल कॉपी के दौरान बढ़ रही है, लेकिन हम इसे कॉपी करने की तुलना में अधिक धीरे-धीरे बढ़ रहे हैं। प्रतिलिपि प्रोग्राम मूल फ़ाइल आकार से आगे जाता रहेगा, क्योंकि जब तक यह वहां पहुंचता है, तब तक फ़ाइल में कुछ और होता है। लेकिन कुछ बिंदु पर, यह फ़ाइल के अंत तक पकड़ लेता है, और यह जानता है कि यह अंत में है क्योंकि यह अभी और कोई भी बायपास नहीं पढ़ सकता है । तो यह वहीं क्विट करता है, भले ही फाइल आगे बढ़ने वाली हो।
यदि फ़ाइल को काट दिया जाता है, तो कॉपी प्रोग्राम कहता है "वाह, मैं फ़ाइल के अंत में हूं!" और छोड़ देता है।
और अगर डेटाबेस के प्रोग्राम, :-) के अनुसार, फ़ाइल के टुकड़ों को यादृच्छिक रूप से अपडेट किया जा रहा है, तो आपकी कॉपी में पुराने और नए डेटा का कुछ मिश्रण होने वाला है, क्योंकि डेटा एक ही समय में कॉपी नहीं किया जाता है। परिणाम संभवतः एक भ्रष्ट प्रतिलिपि होगी, यही कारण है कि यह आमतौर पर लाइव डेटाबेस की प्रतियां बनाने के लिए एक अच्छा विचार नहीं है।
(उस ने कहा, मैं काउचडीबी से परिचित नहीं हूं, और इस तरह के भ्रष्टाचार के लिए प्रतिरोधी होने के लिए एक डेटाबेस तैयार करना संभव है। लेकिन पूरी तरह से सुनिश्चित होना सबसे अच्छा है।)