এমভি বাধা দিলে কী ঘটে?


72

লিনাক্স mvকমান্ড বাধা দিলে কী ঘটে ? বলুন, আমি একটি সম্পূর্ণ ডিরেক্টরি অন্য কোনও স্থানে নিয়ে যাচ্ছি এবং চলন্ত অবস্থায় এটি বাধাগ্রস্থ করছি। উত্স ডিরেক্টরিটি এখনও অচ্ছুত থাকবে?

উত্তর:


51

আপনি যদি একই ফাইল সিস্টেমে একটি ডিরেক্টরি সরান , আপনি কেবলমাত্র ফাইল সিস্টেমের একটি অবস্থান থেকে ডিরেক্টরি এন্ট্রি সরান move যেমন, mv /source/dir /target/dirনির্দেশিকা প্রবেশ মুছে ফেলবে dirথেকে /sourceএবং একটি নতুন তৈরি /target। এটি একটি পারমাণবিক সিস্টেম কল (যেমন, নিরবচ্ছিন্ন) দ্বারা সম্পন্ন হয়েছে। ডিরেক্টরিতে প্রবেশের dirপাশাপাশি ডিরেক্টরিতে থাকা প্রকৃত সামগ্রীটি অন্তর্ভুক্ত নয় এমন ইনোড।

আপনি যদি ডিরেক্টরিটি একটি ফাইল সিস্টেম থেকে অন্য ফাইলটিতে স্থানান্তর করেন তবে সমস্ত ফাইল প্রথমে নতুন ফাইল সিস্টেমে অনুলিপি করা হয় এবং তারপরে মূল ফাইলটি থেকে লিঙ্কমুক্ত থাকে। সুতরাং mvএটি অনুলিপি করার সময় যদি আপনি বাধা পান তবে আপনার কিছু ফাইলের দুটি অনুলিপিটি শেষ হতে পারে - পুরানো লোকেশন এবং নতুন একটিতে।


6
@ ওয়েসলি: না, কোনও আংশিক ফাইল থাকবে না। যদি সিস্টেমটি স্থির থাকে (উদাহরণস্বরূপ, আপনি সিটিআরএল-সি মারেন), এটি স্বয়ংক্রিয়ভাবে সরানো হবে। যদি না হয় (উদাহরণস্বরূপ, বিদ্যুৎ হ্রাস), আংশিক ফাইলটি গন্তব্য ডিস্কে কোথাও দুর্গম অ্যাক্সেসে ছেড়ে দেওয়া যেতে পারে তবে পরবর্তীটি পরিষ্কার করা উচিত fsck(যা সম্ভবত পুনরায় বুট করার সময় স্বয়ংক্রিয়ভাবে চলবে, যেহেতু ডিস্কটি পরিষ্কারভাবে আনমাউন্ট করা হয়নি)।
ডেভ শেরোহমান

50
ভুল। আপনি যদি ডিআরকে একটি এফএস থেকে অন্য এমভি / এফএস 1 / দির / এফএস 2 / এ স্থানান্তর করেন এবং আপনি বাধা দেন, / fs1 / dir / সম্পূর্ণভাবে এখানে থাকবে stay / fs1 / dir মুভটি কেবল তখন সরানো হবে যখন মুভটি সম্পূর্ণ হবে।

8
user263131 সঠিক। চালান strace mv /fs1/dir /fs2/- এমভি খুব শেষ কাজটিunlinkat সমস্ত উত্স ফাইলগুলিতে একবারে কল করে (সেগুলি অনুলিপি করা হয় নি এমনভাবে নয়)।
জাকব

7
@ জেজে মনে হচ্ছে এর কারণ এটি আপনি বাশ সম্প্রসারণ করেছেন, এমভি প্রসারণের প্রতিটি ফাইলকে পৃথক উত্স হিসাবে বিবেচনা করে (এভাবে স্বতন্ত্রভাবে সেগুলি করছে)।
gkanwar

5
সুতরাং .... @ বিএমকে বা অন্যরা, আপনি কি এই উত্তরটি কম ... ভুল হিসাবে আপডেট করতে চান?
আর্টেম রাশাকোভস্কিই

35

জিএনইউ বাস্তবায়ন কমান্ড লাইনে যুক্তিগুলির পুনরাবৃত্তি করে, প্রথমে নতুন নামকরণের চেষ্টা করে এবং যদি এটি ব্যর্থ হয় তবে পুনরাবৃত্তভাবে অনুলিপি করে এবং উত্সটি পুনরাবৃত্তভাবে মুছে দেয়। সুতরাং

mv a b c/

মুছে ফেলবে একটি অনুলিপি সামনে , আর কিছু মোছার চালু হচ্ছে না একটি সামনে গন্তব্য কপি সম্পূর্ণ।

নোট করুন যে এটি শুধুমাত্র জিএনইউ বাস্তবায়নের ক্ষেত্রে প্রযোজ্য।

স্পষ্ট করার জন্য: একটি যদি ডি এবং সমন্বিত একটি ডিরেক্টরি হয় এবং একটি ফাইল হয় তবে ক্রম হবে

  • সি / এ তৈরি করুন
  • অনুলিপি করুন / ডি -> সি / এ / ডি
  • অনুলিপি করুন </ e -> সি / এ / ই
  • মুছে ফেলুন a / d
  • একটি / ই মুছুন
  • মুছে ফেলুন a
  • কপি খ -> সি / বি
  • মুছুন খ

1
আপনি কি এর জন্য একটি উত্স সরবরাহ করতে পারেন? অন্যান্য উত্তরদাতারা বলছেন যে কোনও উত্স ফাইলটি এটি একটি আলাদা এফএসে অনুলিপি করার সাথে সাথেই মুছে ফেলা হয় (যেমন সমস্ত অনুলিপি হয় না তবে সমস্ত মুছে ফেলা হয়)।
জেমসবেটেট

1
অভিজ্ঞতা থাকতে হবে। আমার উত্তর এবং অন্যান্যগুলি কীভাবে সামঞ্জস্যপূর্ণ তা আরও স্পষ্ট করার জন্য আমি একটি উদাহরণ যুক্ত করেছি। আপনি যদি কেবল পৃথক ফাইলের তালিকা করেন তবে প্রকৃতপক্ষে প্রতিটি ফাইল মুছে ফেলা হবে।
সাইমন রিখার

আমি এই উত্তরে ম্যাকোএসে বর্ণিত আচরণটি পর্যবেক্ষণ করি, এটি একটি বিএসডি সহ mv, সুতরাং এটি কেবল জিএনইউ-নয়।
কিরেলেগিন

12

আপনি একটি ডিরেক্টরি সরান, সরানোতে বাধা দিন এবং মূল ডিরেক্টরিটি অক্ষত থাকবে:

$ mv a b/

আপনি যদি একাধিক ডিরেক্টরি সরিয়ে থাকেন তবে প্রতিটি বাধা উত্স বা গন্তব্যের উপর অক্ষত থাকবে, আপনি যখন বাধা দিয়েছেন তার উপর নির্ভর করে:

$ mv a b c/

আমি কীভাবে আমার উত্তর পেয়েছি:

$ mv --version
mv (GNU coreutils) 8.21

$ info mv
... It first uses some of the same code that's used by `cp -a'
to copy the requested directories and files, then (assuming the copy
succeeded) it removes the originals.  If the copy fails, then the part
that was copied to the destination partition is removed.  If you were
to copy three directories from one partition to another and the copy of
the first directory succeeded, but the second didn't, the first would
be left on the destination partition and the second and third would be
left on the original partition.

পরীক্ষা হিসাবে, আমি একটি এনএফএস ডিরেক্টরিতে একটি বড় ফোল্ডার অনুলিপি করেছি, বাধা পেয়েছি এবং আমার উত্স বৃহত ফোল্ডারে ফাইলগুলির সংখ্যা একই ছিল এবং আংশিক বিষয়বস্তু এনএফএস ডিরেক্টরিতে রেখে গেছে। আমি যাচাই করতে "Find। -Type f | wc -l" ব্যবহার করেছি।

দেখে মনে হচ্ছে সাইমন এর উত্তর সঠিক is


9

গৃহীত উত্তরটি ফাইল সিস্টেমের মধ্যে চলা সম্পর্কে অবশ্যই ভুল - এটি একটি সত্য যা ইতিমধ্যে কয়েকবার আমাকে অনেক ঝামেলা বাঁচিয়েছিল। ডিরেক্টরিকে সাব-ডিরেক্টরি অন্তর্ভুক্ত করার সময়, সমস্ত উপ-ডিরেক্টরি কপি করার আগে একটি উপ-ডিরেক্টরিতে কোনও ফাইল মুছে ফেলা হবে না। এটি হল "অবজেক্ট বাই অবজেক্ট" এর আসল অর্থ - বিটিডব্লিউ.একটি সাব-ডাইরেক্টরি একটি অবজেক্ট (ফাইল) এবং সুতরাং কোনও কিছু মোছার আগে এর অখণ্ডতা গন্তব্যে একটি সম্পূর্ণ অনুলিপি দ্বারা সংরক্ষণ করতে হবে। সুতরাং সাইমন এর উত্তর সঠিক উত্তর হিসাবে আমার কাছে উপস্থিত হয়।


4

নং এমভি অবজেক্ট দ্বারা বস্তু পরিচালনা করে, সুতরাং ইতিমধ্যে প্রক্রিয়াজাত করা অবজেক্টগুলি উত্স থেকে সরানো হবে।


2

অবশ্যই না। সরানো বস্তু দ্বারা বস্তু তৈরি করা হয়। সুতরাং, অবজেক্টের অবধি অবধি অবধি অবধি গন্তব্যে সরানো বস্তুটির উত্সটিতে আর কোনও অস্তিত্ব থাকবে না।

যদি এমভি বড় ফাইলের জন্য জারি করা হয়েছিল (বিভিন্ন মধ্যে) এবং এটি বাধাপ্রাপ্ত হয় তবে উত্স অক্ষত থাকবে। লক্ষ্যবস্তুতে আপনি বাধা দেওয়ার অবধি একটি অসম্পূর্ণ ফাইল দেখতে পাবেন।

তবে আপনি একই কমান্ডের সাহায্যে এমভি পুনরুদ্ধার করতে পারেন এবং প্রক্রিয়াটি অবিরত থাকবে।


2

আপনি যদি এমভি বাধা দিতে চান কারণ আপনি টার্মিনাল থেকে সংযোগ বিচ্ছিন্ন করতে চান, আপনি কেবল এটি ব্যাকগ্রাউন্ডে পাঠাতে পারেন:

* press Ctrl+Z

# bg
# disown

1
এটি একটি ভাল পয়েন্ট তবে এটি আসল প্রশ্নের উত্তর দেয় না।
জুলি পেলেটিয়ার

1
@ জুলিপেল্টিয়ার, তবে আমি এটিই সন্ধান করছিলাম যাতে কেউ এটি করতে আগ্রহী হন।
29 Ряба
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.