আমি কি ফাইল ক্যাশে ব্যবহার না করে দ্রুত বড় ফাইলগুলি অনুলিপি করতে পারি?


19

preloadপ্যাকেজটি যুক্ত করার পরে , আমার অ্যাপ্লিকেশনগুলি গতি বাড়ছে বলে মনে হচ্ছে তবে আমি যদি একটি বড় ফাইল অনুলিপি করি তবে ফাইল ক্যাশে ফাইলের আকারের দ্বিগুণ হয়ে যায়।

একটি একক 3-4 গিগাবাইট ভার্চুয়ালবক্স চিত্র বা ভিডিও ফাইলকে একটি বাহ্যিক ড্রাইভে স্থানান্তরিত করার মাধ্যমে, এই বিশাল ক্যাশে মনে হয় যে সমস্ত প্রিললোড হওয়া অ্যাপ্লিকেশনগুলি মেমরি থেকে সরিয়ে ফেলবে, যার ফলে লোডের সময় এবং সাধারণ পারফরম্যান্সের ড্রপ বাড়ে।

সেখানে বড়, মাল্টি গিগাবাইট ফাইল কপি করতে একটি উপায় আছে কি ছাড়া তাদের ক্যাশিং (অর্থাত ফাইল ক্যাশে বাইপাস)? অথবা নির্দিষ্ট ফোল্ডারকে ক্যাশে হওয়া থেকে শ্বেতলিস্ট বা কালো তালিকাভুক্ত করার কোনও উপায়?

উত্তর:


19

নেই nocacheইউটিলিটি, যা মত একটি আদেশের জন্য prepended করতে ioniceএবং nice। এটি কোনও লাইব্রেরি প্রিলোড করে কাজ করে যা কোনও খোলা কলগুলিতে পতাকা posix_fadviseসহ যুক্ত করে POSIX_FADV_DONTNEED

সহজ কথায়, এটি কার্নেলকে পরামর্শ দেয় যে সেই নির্দিষ্ট ফাইলের জন্য ক্যাশিংয়ের প্রয়োজন হয় না; কার্নেলটি সাধারণত ফাইলটি ক্যাশে করে না। প্রযুক্তিগত বিশদ জন্য এখানে দেখুন ।

এটি কোনও বিশাল অনুলিপি কাজের জন্য বিস্ময়কর কাজ করে, যেমন আপনি যদি চলমান সিস্টেমে কমপক্ষে সম্ভাব্য প্রভাব সহ পটভূমিতে কোনও মাল্টি টেরাবাইট ডিস্ক ব্যাকআপ করতে চান তবে আপনি কিছু করতে পারেন nice -n19 ionice -c3 nocache cp -a /vol /vol2

উবুন্টু ১৩.১০ এবং তার বেশি প্যাকেজ পাওয়া যাবে। আপনি যদি পূর্বের প্রকাশে থাকেন তবে আপনি 13.10 প্যাকেজটি ইনস্টল করতে পারেন বা ফ্রেঞ্চোইস মেরিয়ার দ্বারা এই 12.04 ব্যাকপোর্টের জন্য বেছে নিতে পারেন ।


আমি জিইউআইয়ের মাধ্যমে যে কোনও কিছু করা সম্ভব হয়েছিল, সেই সাথে কেবল 'নো ক্যাশে' ফোল্ডারগুলিকে কালো তালিকাভুক্ত করার একটি উপায় আশা করছিলাম, তবে এটি আপাতত করতে হবে।
ভায়জার

12

একক বড় ফাইল, ব্যবহারের জন্য ddসঙ্গে সরাসরি ফাইল ক্যাশ এড়াতে ইনপুট / আউটপুট:

আপনি যদি একটি (বা কয়েকটি) বড় মাল্টি-গিগাবিট ফাইল স্থানান্তর করতে চান তবে এটি করা সহজ dd:

dd if=/path/to/source of=/path/to/destination bs=4M iflag=direct oflag=direct
  • directপতাকার বলতে ddকার্নেলের সরাসরি ইনপুট / আউটপুট বিকল্প (ব্যবহার করতে O_DIRECTপড়া ও লেখা সময়), এইভাবে সম্পূর্ণরূপে ফাইল ক্যাশে বাইপাস করে।
  • bsBlocksize বিকল্প একটি যুক্তিসঙ্গতভাবে বড় কোনো মানে সেট করা আবশ্যক যেহেতু শারীরিক ডিস্ক অপারেশনের সংখ্যা কমানোর জন্য dd, পালন করা আবশ্যক যেহেতু সার্চ / লিখেছেন আর ক্যাশে করা হয় এবং অনেক ছোট সরাসরি অপারেশন একটি গুরুতর মন্দার হতে পারে।
    • 1 থেকে 32 এমবি অবধি মান পরীক্ষা করতে নির্দ্বিধায়; উপরের সেটিংসটি 4 এমবি ( 4M)।

একাধিক / পুনরাবৃত্ত ডিরেক্টরি কপির জন্য , দুর্ভাগ্যক্রমে, সহজে কোনও সহজলভ্য সরঞ্জাম নেই; সাধারণ cp, ইত্যাদি সরাসরি I / O সমর্থন করে না

/ ই iflags & oflags সঠিক iflag & oflag এ পরিবর্তিত হয়েছে


1
zshএর **অপারেটর দিয়ে পুনরাবৃত্তির কাজ করা যেতে পারে । zshসংগ্রহস্থল থেকে ম্যানুয়ালি ইনস্টল করা প্রয়োজন।
মনিকা পুনরায় ইনস্টল করুন - :23--

1
আসলে না. ddএর অদ্ভুত বাক্য গঠনটি ** অপ্টেটরকে বাড়িয়ে তোলে। আপনি এখনও একটি শেল স্ক্রিপ্ট যে আর্গুমেন্ট সাধারণত (পেয়েছিলাম ব্যবহার করতে পারে dd.sh in.file out.file** সঙ্গে ফাইলের নামের মধ্যে) এবং ফাইলের নামের দিলেন ddব্যবহার $1, $2ইত্যাদি, যা DD এর অদ্ভুত সিনট্যাক্স নিয়মভঙ্গ করলে করা যাবে না।
মনিকা পুনরায় স্থাপন করুন - :0--

1
ডাইরেক্ট মেকস খুব ধীর, কারণ এটি এএফআইএইকে রিডহেড ক্যাশেগুলিও অক্ষম করে, যা সম্ভবত আপনি চান না এবং এটি কোনও বেঞ্চমার্কিং দৃশ্যে বাস্তবসম্মত নয়। পরিবর্তে "iflag = nocache oflag = nocache" ব্যবহার করুন, যা ওএসকে হুবহু বলছে যে আপনাকে ইন-ফাইল বা আউট-ফাইলের ক্যাশে দরকার নেই।
stolsvik

1

আপনি ddব্যবহার করে findএবং পুনরাবৃত্তভাবে একটি ডিরেক্টরি অনুলিপি করতে পারেনmkdir

আমাদের দুটি সমস্যা সমাধান করতে হবে:

  1. dd ডিরেক্টরিগুলির সাথে কী করতে হয় তা জানে না
  2. dd একবারে কেবল একটি ফাইল অনুলিপি করতে পারে

প্রথমে ইনপুট এবং আউটপুট ডিরেক্টরিগুলি সংজ্ঞায়িত করা যাক:

SOURCE="/media/source-dir"
TARGET="/media/target-dir"

এখন আসুন cdসোর্স ডিরেক্টরিতে so findুকিয়ে দেই তাই আপেক্ষিক ডিরেক্টরিগুলি আমরা সহজেই পরিচালনা করতে পারি:

cd "$SOURCE"

থেকে ডিরেক্টরি ট্রি সদৃশ $SOURCEকরতে$TARGET

find . -type d -exec mkdir -p "$TARGET{}" \;

থেকে সদৃশ ফাইল $SOURCEথেকে $TARGETলেখা ক্যাশে বাদ (কিন্তু পঠিত ক্যাশে ব্যবহার!)

find . -type f -exec dd if={} of="$TARGET{}" bs=8M oflag=direct \;

দয়া করে নোট করুন যে এটি ফাইল সংশোধন সময়, মালিকানা এবং অন্যান্য বৈশিষ্ট্য সংরক্ষণ করবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.