উত্তর:
অবশ্যই ssh ভাল হয়।
এনএফএস বিভিন্ন দূরবর্তী প্রক্রিয়া কল এবং ডেটা সিঙ্ক্রোনাইজেশন অপেক্ষার সময়গুলির সাথে একটি জটিল নেটওয়ার্ক প্রোটোকল ব্যবহার করে। Ssh এর ক্ষেত্রে এগুলি প্রয়োগ হয় না।
তদুপরি, অনেক তালা আছে। এনএফএস-এ ফাইল মুছে ফেলা এই পদ্ধতিতে কাজ করে:
rm
কমান্ড unlink()
সিস্টেলকে দেয়unlink()
কলে ফিরিয়ে দেয়unlink()
দূরবর্তী দিকে এই কলটি কার্যকর করেunlink()
আপনার আসল কলের প্রস্থান কোড 0 এ রূপান্তর করেrm
rm
পরের ফাইলটিতে পুনরাবৃত্তি হয়, যাও 1এখন, গুরুত্বপূর্ণ বিষয় হল: 2-7 মধ্যে, rm
অপেক্ষা করতে হয়েছে। এটি পরের unlink()
কলটিকে অযৌক্তিকভাবে প্রেরণ করতে পারে , তবে এটি ইভেন্ট-ওরিয়েন্টেড সরঞ্জাম নয়, একক থ্রেডযুক্ত। এটি যদি পারত তবে এটির জন্য এখনও জটিল এনএফএসের মাউন্ট ফ্ল্যাগের প্রয়োজন হবে। ফলাফল না পাওয়া পর্যন্ত এটি অপেক্ষা করে।
এনএফএস - এবং যে কোনও নেটওয়ার্ক ফাইল সিস্টেম সর্বদা খুব ধীর হয়।
অনেক ক্ষেত্রে, আপনি একটি কৌশল দিয়ে পুনরাবৃত্ত মোছার পরিমাণটি অর্ধ-অসীম গতি করতে পারেন:
mv -vf oldfilms oldfilms-
) নামানrm -rf oldfilms- &
)অনেকগুলি (তবে সমস্ত নয়) দিক থেকে এই ডিরেক্টরি অপসারণটি এমনভাবে দেখাবে যা বাস্তবভাবে শূন্য সময়ে ঘটেছিল।
এক্সটেনশন: যেমন @ এল.প্যাসকাদো তাঁর দুর্দান্ত মন্তব্যে উল্লেখ করেছেন, আসলে 2-7 কে কোনও ফাইলের জন্য 3x চালাতে হবে :
lstat()
সিস্টোল সহ),unlink()
ক্ষেত্রে, ডিরেক্টরিগুলির ক্ষেত্রে, এর মধ্যে opendir()
সমস্ত ফাইল / ডিরেক্টরি মুছে ফেলা হয়, তারপরে closedir()
, শেষ পর্যন্ত rmdir()
।readdir()
কল সহ পরবর্তী ডিরেক্টরি এন্ট্রিতে পুনরাবৃত্তি করুন।এটির জন্য ফাইলগুলির জন্য 3 এনএফএস আরপিসি কমান্ড এবং ডিরেক্টরিগুলির জন্য অতিরিক্ত 3 টি প্রয়োজন।
হ্যাঁ. ভাল হয়ত. এটা নির্ভর করে. সংখ্যক ফাইল এবং ডিরেক্টরিগুলির জন্য, এটি খুব বেশি পার্থক্য করতে পারে না।
এনএফএস মাউন্ট করা ডিরেক্টরিতে ফাইল অপারেশন বাল্কে করা ধীর গতিতে। আপনার যদি নিজেই এনএফএস সার্ভারে লগ ইন করার এবং প্রকৃত ডিরেক্টরিতে সেগুলি করার সুযোগ থাকে তবে এটি আরও দ্রুত হবে।
আসুন আমি সিভিএস থেকে চেক আউট করেছি এবং এনএফএসের উপরে মাউন্ট করেছি ওপেনবিএসডি পোর্ট সংগ্রহগুলি সরিয়ে এটি পরীক্ষা করে দেখি:
এনএফএস সার্ভারে:
$ cd /export/shared/ports
$ du -hs .
2.6G .
$ find . | wc -l
179688
$ time rm -rf /export/shared/ports/*
0m20.87s real 0m00.12s user 0m04.62s system
ক্লায়েন্টে (ব্যাকআপ থেকে মূল ফাইলগুলি পুনরুদ্ধার করার পরে):
$ time rm -rf /usr/ports/*
6m49.73s real 0m01.55s user 1m08.96s system
-r
পতাকার উল্লেখrm
রয়েছে, প্রথমে ফাইলটি ডিরেক্টরি (lstat
এনএফএসের মাধ্যমে) কিনা তাopendir
খতিয়ে দেখতে হবে, এটি (এনএফএসের মাধ্যমে) খুলুন , এর বিষয়বস্তু (readdir
এনএফএসের মাধ্যমে) পড়ুন, এবং কেবল তখনই ভিতরে থাকা প্রতিটি ফাইলের উত্তরে বর্ণিত প্রকৃত মুছে ফেলা সম্পাদন করতে হবে এবং সাব-ডিরেক্টরিতে পুনরাবৃত্তি করা, বন্ধ ডিরেক্টরি (এনএফএস এরclosedir
মাধ্যমে), এবং তারপরে পুনরাবৃত্তি করুন, প্রতিটি পাওয়া দিরের জন্য ।