আমি একটি নিরাপদ এবং আরও অনেক দ্রুত পদ্ধতির জন্য গিয়েছিলাম কারণ তালিকায় আমার 18.000 ফাইল রয়েছে! একটি বড় ড্রুপাল ইনস্টলেশনতে আমার ছবিগুলি পরিষ্কার করা দরকার।
তালিকায় নেই এমন সমস্ত ফাইল মুছে ফেলা কেবল তালিকায় থাকা ফাইলগুলি রাখার মতোই। সুতরাং আমি সিদ্ধান্ত নিয়েছিলাম যে তালিকাটি ফাইল থেকে অন্য স্থানে অনুলিপি করার চেষ্টা করেছি, তবে ২০ জিবি ফাইল অনুলিপি করাতে খুব বেশি জায়গা লাগবে এবং পাশাপাশি খুব ধীর হয়ে যাবে। কৌশলটি হ'ল বিকল্পটি বিকল্পটি hardlinks
ব্যবহার করে তার পরিবর্তে ফাইলগুলি অনুলিপি করা । এটি প্রায় কোনও স্থান নেয় এবং খুব দ্রুত is অতিরিক্ত হিসাবে, যেহেতু আমার ডিরেক্টরি কাঠামো সংরক্ষণ করার প্রয়োজন ছিল তাই আমি বিকল্পটি ব্যবহার করেছি ।-l
cp
--parents
আমার ফাইল তালিকার একটি অংশ এখানে দেওয়া হয়েছে:
1px.png
misc/feed.png
modules/file/icons/x-office-presentation.png
modules/file/icons/x-office-spreadsheet.png
newsletter.png
sites/all/libraries/ckeditor/plugins/smiley/images/devil_smile.png
sites/all/libraries/ckeditor/plugins/smiley/images/regular_smile.png
sites/default/files/009313_PwC_banner_CBS_Observer_180x246px.jpg
সুতরাং একটি উদাহরণ লাইন হবে অস্থায়ী গন্তব্য হিসাবে:
cp -l --parents 'misc/feed.png' temp
এটি এই কাঠামো তৈরি করবে:
temp
misc
feed.png
নোট করুন যে হার্ডলিঙ্কগুলি কাজ করার জন্য উত্স হিসাবে ডেসটিন্যাটন অবশ্যই একই ফাইল সিস্টেমে থাকতে হবে।
পরবর্তী পদক্ষেপটি স্ক্রিপ্টটি নির্মাণ করা হয়:
sed -e "s,^,cp -l --parents '," -e "s,$,' /some/where/temp," filelist > newfilelist
এখন ধরে নেওয়া, আপনি ইতিমধ্যে খালি দির / কিছু / যেখানে / টেম্প তৈরি করেছেন, আপনি ফাইলগুলি অনুলিপি করতে পারেন:
sh newfilelist 2> missing_files
ত্রুটিগুলি কীভাবে শেষ হয় তা নোট করুন missing_files
। এই পদ্ধতির অতিরিক্ত বোনাস যে আপনি আসল তালিকা যে আসলে থেকে ফাইল সম্বন্ধে জানতে-- হবে না থাকবেই!
স্ক্রিপ্টটি চালানোর পরে, টেম্পে কেবলমাত্র সেই ফাইলগুলি অন্তর্ভুক্ত থাকবে যা ফাইল তালিকার মধ্যে রয়েছে তবে কোনও কিছু মোছা ছাড়াই এবং অতিরিক্ত স্থান না নিয়ে। আপনি যদি ফলাফলটির সাথে সন্তুষ্ট হন তবে আপনি সাবফোল্ডারগুলি সহ সমস্ত অরজিনাল ফাইলগুলি মুছতে পারেন।
শেষ পর্যন্ত, ফাইল এবং ফোল্ডারগুলি অস্থায়ী থেকে মূল অবস্থানে ফিরে যান।
18.000 ফাইলের জন্য এটি কয়েক সেকেন্ড সময় নিয়েছিল।