एक फ़ाइल को एक फ़ाइल में स्थानांतरित किया जा रहा है जिसे पढ़ा जा रहा है


10

जब कोई फ़ाइल ले जाया जाता है और गंतव्य फ़ाइल पहले से मौजूद है और वर्तमान में पढ़ी जा रही है, तो क्या ऑपरेशन सफल होगा? क्या यह इस बात पर निर्भर करेगा कि गंतव्य फ़ाइल पर रीडिंग ऑपरेशन कितने समय तक रहता है?

जवाबों:


9

रीडिंग ऑपरेशन सफल होगा, भले ही रीडिंग ऑपरेशन को पूरा करने में लगने वाले समय से।

यह क्यों और कैसे काम करता है?

जब रीडिंग ऑपरेशन शुरू होता है, तो फ़ाइल का इनकोड एक हैंडल के रूप में उपयोग किया जाता है जिससे फ़ाइल की सामग्री पढ़ी जाती है।

दूसरी फ़ाइल को लक्ष्य फ़ाइल में ले जाने पर, परिणाम एक नया इनकोड होगा, जिसका अर्थ है कि डिस्क पर फ़ाइल की भौतिक सामग्री को कहीं और रखा जाएगा और जिस फ़ाइल को पढ़ा जा रहा है उसकी मूल सामग्री को नहीं छुआ जाएगा।

केवल एक चीज जो उनके पास है, वह है उनका पथ / फ़ाइल नाम, जबकि डिस्क पर अंतर्निहित इनकोड और फ़ायस्कल स्थान बदलता है।

एक बार रीडिंग ऑपरेशन खत्म हो जाने के बाद (किसी अन्य प्रक्रिया को देखते हुए अभी भी पुरानी फाइल पर एक ओपन फाइल हैंडल नहीं है और इसके इनोड को संदर्भित करने वाले अन्य हार्डलिंक नहीं हैं), पुराना डेटा खारिज कर दिया जाएगा।

मूविंग ऑपरेशन पूरा होने के बाद, फ़ाइल में एक नया इनकोड इंडेक्स नंबर होगा।

आप फ़ाइलों का उपयोग करके इनकोड इंडेक्स संख्या प्रदर्शित कर सकते हैं ls -i /tmp/some-file

ऊपर वर्णित उसी कारण के लिए, उन फ़ाइलों को हटाना संभव है जो अभी भी एक एप्लिकेशन द्वारा उपयोग में हैं, क्योंकि फाइल का उपयोग करने वाले एप्लिकेशन सिर्फ इनोड से पढ़ेंगे (डिस्क पर वास्तविक फ़ाइल सामग्री की ओर इशारा करते हुए), जबकि फाइल का संदर्भ फाइलसिस्टम में हटा दिया गया है।


1
आप हार्ड लिंक का उल्लेख करना भूल गए हैं: जब रीडिंग ऑपरेशन खत्म हो जाता है, यदि वह इनकोड किसी अन्य निर्देशिका प्रविष्टि से जुड़ा हुआ है, तो डेटा को हटाया नहीं जाएगा (क्योंकि इसमें अभी भी एक नाम है)।
cjm

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