यूनिक्स पर mv और {cp + rm पुरानी फाइल} में कुछ अंतर है?


12
  • mv a b

  • cp a b; rm a

ये कथन के दो सेट हैं। क्या वे क्या करते हैं, इसके बीच कुछ अंतर है?


1
atomicity? मैं वास्तव में नहीं जानता कि अगर mv कमांड परमाणु है, हालांकि।
Adriano Varoli Piazza

हाँ। तुमने क्यों पूछा?

1
अभी व, mv के समान है ln + rmहालाँकि, पूर्व क्रॉस-फाइलसिस्टम चाल के लिए काम करेगा (जो तब बस बन जाता है cp + rm ), जबकि उत्तरार्द्ध में विफल हो जाएगा ln (जो क्रॉस-फाइलसिस्टम हार्ड लिंक का समर्थन नहीं करता है)।
Chris Jester-Young

हर दिन एक स्कूल का दिन होता है - किसी के लिए भी यह सोचकर कि इस डिफ़ॉल्ट व्यवहार को कैसे ओवरराइड करना है, जिसकी आपको आवश्यकता है --remove-destination स्विच - stackoverflow.com/a/9371263/409638
robert

जवाबों:


20

शामिल फ़ाइलों को एक ही फाइल सिस्टम पर माना जाता है, तो mv बस फाइल सिस्टम में पॉइंटर्स को बदलता है, जबकि cp फाइल की पूरी सामग्री को कॉपी करता है, और rm एक बार फिर पॉइंटर्स को बदलता है। तो एमवी कहीं अधिक कुशल है।


लेकिन वे ठीक वही काम करते हैं, है ना?
Lazer

8
नहीं, वे नहीं।

2
@eSKay: नंबर दो परिदृश्य: 1. लक्ष्य मौजूद नहीं है। mv बस फ़ाइल का नाम बदल देता है (मूल फ़ाइल के रूप में इनोड)। cp नई फ़ाइल के लिए एक नया आईनोड बनाता है। 2. लक्ष्य मौजूद है। mv एक चरण में लक्ष्य फ़ाइल और नाम बदलकर हटाता है (हटाता है)। cp लक्ष्य फ़ाइल के इनकोड को ओवरराइट करता है।
Chris Jester-Young

7
भी mv अनुमति या स्वामित्व कभी नहीं बदलता है। कल्पना कीजिए कि आप अपने दोस्त के होमेडिर से एक फाइल अपने ही होमडायर में ले जाना चाहते हैं। अगर तुम mv यह आपके होमडायर में एक फ़ाइल के साथ समाप्त होगा जो आपके मित्र का है। आप नहीं कर सकते chown या chmod और अनुमतियों के आधार पर इसे संशोधित या पढ़ने के लिए भी नहीं। यदि तुम करो cp के बाद rm फ़ाइल आप की है और सब कुछ ठीक है।
Ludwig Weinzierl

9

हां, एमवी के पास एक ही डिस्क पर परमाणु होने का एक मौका है, जबकि सीपी और आरएम का संयोजन कभी नहीं होता है।

यह मान रहा है कि mv का उपयोग करके लागू किया गया है rename(), जो गारंटी वाला फोन है। उदाहरण के लिए देखें, यह समाचार समूह पोस्ट , जो POSIX को उद्धृत करता है:

यह नाम () फ़ंक्शन समकक्ष है   परिभाषित करने के लिए नियमित फ़ाइलों के लिए       आईएसओ सी मानक द्वारा। यहाँ इसका समावेश उस परिभाषा को विस्तार देता है   सेवा मेरे       निर्देशिकाओं पर कार्रवाई शामिल करें और नया होने पर व्यवहार निर्दिष्ट करें       पैरामीटर उस फ़ाइल का नाम देता है जो पहले से मौजूद है। वह विनिर्देश       आवश्यकता है कि कार्य की क्रिया परमाणु हो।


7

एक ही फाइल सिस्टम mv पर निर्देशिका संदर्भ बदलता है, एक ही इनोड की ओर इशारा करता है (फ़ाइल डेटा और मेटाडेटा) इस प्रकार:

  • एक परमाणु ऑपरेशन है (इसे किसी अन्य प्रक्रिया फ़ाइल ऑपरेशन से बाधित नहीं किया जा सकता है)
  • अतिरिक्त डिस्क स्थान की केवल एक तुच्छ राशि लेता है (निर्देशिका में अतिरिक्त नाम)
  • फ़ाइल अनुमतियां और स्वामित्व सुरक्षित रखता है
  • डेटा की मात्रा के आधार पर बहुत तेज हो सकता है

कॉपी करें और निकालें

  • परमाणु नहीं है (एक और प्रक्रिया सीपी और आरएम कमांड के बीच हस्तक्षेप कर सकती है)
  • एक छोटी अवधि (cp और rm कमांड के बीच) के लिए डिस्क पर फ़ाइल डेटा को दो बार संग्रहीत करने की आवश्यकता होती है
  • चूक के लिए फ़ाइल अनुमतियाँ और स्वामित्व में परिवर्तन
  • डेटा की मात्रा के आधार पर बहुत धीमा या विफल हो सकता है

4

जब स्रोत और गंतव्य समान भौतिक मात्रा पर होते हैं, तो पहला दृष्टिकोण बस नाम बदलकर होता है और बहुत तेज़ होता है (भले ही फ़ाइल (s) बहुत बड़ी हो)।

cp & Amp; rm हमेशा सभी डेटा को लोड / स्टोर करना होगा, भले ही यह आवश्यक न हो।


3

mv संक्षेप में एक "नाम बदलें" ऑपरेशन है। इसका मतलब यह है कि डिस्क पर फ़ाइल उसी स्थान पर छोड़ दी गई है। कोई वास्तविक फ़ाइल ऑपरेशन नहीं किया जाता है।


2

हाँ।

mv बस फ़ाइल सिस्टम मेटाडेटा को नाम और स्थान से संबंधित फ़ाइल में बदल देता है, जबकि cp फ़ाइल की एक अलग प्रतिलिपि बनाता है, जिसमें बहुत कुछ लगता है लंबे समय तक यह पहली फ़ाइल को पूरी तरह से पढ़ना चाहिए और फिर इसे किसी अन्य फ़ाइल में लिख देना चाहिए


2

cp और rm डिस्क उपयोग पर बहुत भारी है, और डिस्क स्थान कारणों से विफल हो सकता है।


2

अंतर यह है कि mv फ़ाइल-विशेषताओं का संरक्षण करता है जबकि डिफ़ॉल्ट रूप से cp नहीं करता है, उदाहरण के लिए सृजन-तिथि को वर्तमान तिथि पर सेट करना।

इस डिफ़ॉल्ट को ओवरराइड करने के लिए, अंतिम डेटा संशोधन, अंतिम एक्सेस का समय, उपयोगकर्ता आईडी और समूह आईडी (केवल अगर यह करने की अनुमति है) को संरक्षित करने के लिए "cp -p" का उपयोग करें, फ़ाइल अनुमति बिट्स और SUID और SGID बिट्स।

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