উত্তর:
আপনি যদি একই ফাইল সিস্টেমে একটি ডিরেক্টরি সরান , আপনি কেবলমাত্র ফাইল সিস্টেমের একটি অবস্থান থেকে ডিরেক্টরি এন্ট্রি সরান move যেমন, mv /source/dir /target/dir
নির্দেশিকা প্রবেশ মুছে ফেলবে dir
থেকে /source
এবং একটি নতুন তৈরি /target
। এটি একটি পারমাণবিক সিস্টেম কল (যেমন, নিরবচ্ছিন্ন) দ্বারা সম্পন্ন হয়েছে। ডিরেক্টরিতে প্রবেশের dir
পাশাপাশি ডিরেক্টরিতে থাকা প্রকৃত সামগ্রীটি অন্তর্ভুক্ত নয় এমন ইনোড।
আপনি যদি ডিরেক্টরিটি একটি ফাইল সিস্টেম থেকে অন্য ফাইলটিতে স্থানান্তর করেন তবে সমস্ত ফাইল প্রথমে নতুন ফাইল সিস্টেমে অনুলিপি করা হয় এবং তারপরে মূল ফাইলটি থেকে লিঙ্কমুক্ত থাকে। সুতরাং mv
এটি অনুলিপি করার সময় যদি আপনি বাধা পান তবে আপনার কিছু ফাইলের দুটি অনুলিপিটি শেষ হতে পারে - পুরানো লোকেশন এবং নতুন একটিতে।
strace mv /fs1/dir /fs2/
- এমভি খুব শেষ কাজটিunlinkat
সমস্ত উত্স ফাইলগুলিতে একবারে কল করে (সেগুলি অনুলিপি করা হয় নি এমনভাবে নয়)।
জিএনইউ বাস্তবায়ন কমান্ড লাইনে যুক্তিগুলির পুনরাবৃত্তি করে, প্রথমে নতুন নামকরণের চেষ্টা করে এবং যদি এটি ব্যর্থ হয় তবে পুনরাবৃত্তভাবে অনুলিপি করে এবং উত্সটি পুনরাবৃত্তভাবে মুছে দেয়। সুতরাং
mv a b c/
মুছে ফেলবে একটি অনুলিপি সামনে খ , আর কিছু মোছার চালু হচ্ছে না একটি সামনে গন্তব্য কপি সম্পূর্ণ।
নোট করুন যে এটি শুধুমাত্র জিএনইউ বাস্তবায়নের ক্ষেত্রে প্রযোজ্য।
স্পষ্ট করার জন্য: একটি যদি ডি এবং ই সমন্বিত একটি ডিরেক্টরি হয় এবং খ একটি ফাইল হয় তবে ক্রম হবে
mv
, সুতরাং এটি কেবল জিএনইউ-নয়।
আপনি একটি ডিরেক্টরি সরান, সরানোতে বাধা দিন এবং মূল ডিরেক্টরিটি অক্ষত থাকবে:
$ 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
গৃহীত উত্তরটি ফাইল সিস্টেমের মধ্যে চলা সম্পর্কে অবশ্যই ভুল - এটি একটি সত্য যা ইতিমধ্যে কয়েকবার আমাকে অনেক ঝামেলা বাঁচিয়েছিল। ডিরেক্টরিকে সাব-ডিরেক্টরি অন্তর্ভুক্ত করার সময়, সমস্ত উপ-ডিরেক্টরি কপি করার আগে একটি উপ-ডিরেক্টরিতে কোনও ফাইল মুছে ফেলা হবে না। এটি হল "অবজেক্ট বাই অবজেক্ট" এর আসল অর্থ - বিটিডব্লিউ.একটি সাব-ডাইরেক্টরি একটি অবজেক্ট (ফাইল) এবং সুতরাং কোনও কিছু মোছার আগে এর অখণ্ডতা গন্তব্যে একটি সম্পূর্ণ অনুলিপি দ্বারা সংরক্ষণ করতে হবে। সুতরাং সাইমন এর উত্তর সঠিক উত্তর হিসাবে আমার কাছে উপস্থিত হয়।
নং এমভি অবজেক্ট দ্বারা বস্তু পরিচালনা করে, সুতরাং ইতিমধ্যে প্রক্রিয়াজাত করা অবজেক্টগুলি উত্স থেকে সরানো হবে।
অবশ্যই না। সরানো বস্তু দ্বারা বস্তু তৈরি করা হয়। সুতরাং, অবজেক্টের অবধি অবধি অবধি অবধি গন্তব্যে সরানো বস্তুটির উত্সটিতে আর কোনও অস্তিত্ব থাকবে না।
যদি এমভি বড় ফাইলের জন্য জারি করা হয়েছিল (বিভিন্ন মধ্যে) এবং এটি বাধাপ্রাপ্ত হয় তবে উত্স অক্ষত থাকবে। লক্ষ্যবস্তুতে আপনি বাধা দেওয়ার অবধি একটি অসম্পূর্ণ ফাইল দেখতে পাবেন।
তবে আপনি একই কমান্ডের সাহায্যে এমভি পুনরুদ্ধার করতে পারেন এবং প্রক্রিয়াটি অবিরত থাকবে।
আপনি যদি এমভি বাধা দিতে চান কারণ আপনি টার্মিনাল থেকে সংযোগ বিচ্ছিন্ন করতে চান, আপনি কেবল এটি ব্যাকগ্রাউন্ডে পাঠাতে পারেন:
* press Ctrl+Z
# bg
# disown
fsck
(যা সম্ভবত পুনরায় বুট করার সময় স্বয়ংক্রিয়ভাবে চলবে, যেহেতু ডিস্কটি পরিষ্কারভাবে আনমাউন্ট করা হয়নি)।