ডেডি কখন অনুলিপি করার উপযুক্ত? (বা, যখন পড়ুন () এবং লিখুন () আংশিক) ব্যবহার করার সময় একটি গুরুত্বপূর্ণ সতর্কতা নির্দেশ করে count
: dd
আংশিক ব্লকগুলি অনুলিপি করতে পারে, তাই যখন দেওয়া count
হয় তখন প্রদত্ত সংখ্যক ব্লকের পরে এটি বন্ধ হয়ে যায়, এমনকি কিছু ব্লক অসম্পূর্ণ থাকলেও। সুতরাং আপনি bs * count
অনুলিপি না করা কপিরাইট বাইটের চেয়ে কম দিয়ে শেষ করতে পারেন iflag=fullblock
।
ডিডির জন্য ডিফল্ট ব্লকের আকার 512 বাইট। count
একটি সীমা; আপনার প্রশ্নের ইঙ্গিত হিসাবে সীমাবদ্ধ মাপের একটি ডিভাইস অনুলিপি করার সময় এটি প্রয়োজন হয় না, এবং সত্যই কোনও ডিভাইসের কেবলমাত্র অংশটি অনুলিপি করার উদ্দেশ্যে।
আমি মনে করি এখানে দুটি দিক বিবেচনা করতে হবে: কর্মক্ষমতা এবং ডেটা পুনরুদ্ধার।
যতক্ষণ পারফরম্যান্স সম্পর্কিত, আপনি আদর্শভাবে ব্লক আকারটি অন্তত অন্তর্নিহিত শারীরিক ব্লকের আকারের কমপক্ষে এবং একাধিক হতে চান (সুতরাং সিডি-রোম পড়ার সময় 2048 বাইট)। প্রকৃতপক্ষে আজকাল অন্তর্নিহিত ক্যাচিং সিস্টেমগুলিকে আপনার জন্য জিনিসগুলি বাফার করার সুযোগ দেওয়ার জন্য আপনি বৃহত্তর ব্লক আকারগুলি নির্দিষ্ট করতে পারেন। তবে ব্লকের আকার বাড়ানোর অর্থ dd
আরও অনেক বেশি মেমরি ব্যবহার করতে হবে এবং প্যাকেটের খণ্ডের কারণে আপনি যদি কোনও নেটওয়ার্কে অনুলিপি করছেন তবে এটি পাল্টে উত্পাদনশীল হতে পারে।
যতক্ষণ তথ্য পুনরুদ্ধারের বিষয়, আপনি যদি ছোট ছোট ব্লকের আকার ব্যবহার করেন তবে আপনি ব্যর্থ হওয়া হার্ড ডিস্ক থেকে আরও ডেটা পুনরুদ্ধার করতে পারেন; এটি dd-rescue
স্বয়ংক্রিয়ভাবে করার মতো প্রোগ্রামগুলি : এটি প্রাথমিকভাবে বড় ব্লকগুলি পড়ে তবে কোনও ব্লক যদি ব্যর্থ হয় তবে তারা এটি ছোট ব্লকের আকারের সাথে পুনরায় পড়তে পারে। dd
এটি করবেন না, এটি পুরো ব্লকটি ব্যর্থ করবে।
dd bs=4m iflag=fullblock
বনাম ব্যবহার করেdd bs=1111
এবং প্রাক্তন আপনাকে যে পরিমাণ উচ্চতর ডেটা রেট দিবে তা লক্ষ্য করুন। এর কারণটি হ'ল প্রাক্তনটি এসডি কার্ডে প্রাকৃতিক ব্লকের আকারের সাথে প্রান্তিক হয়, যদিও পরেরটির জন্য এসডি নিয়ামককে আংশিক শারীরিক ব্লকগুলি লেখার জন্য অনেকগুলি পড়ার, অনুলিপি করা এবং পুনর্বিবেচনার প্রয়োজন হয়। এর গুরুত্বকেfullblock
অবমূল্যায়ন করা উচিত নয়, উপায় ব্যতীত,bs
কেবল এটিই সর্বাধিক এবং আংশিক পাঠগুলি পরবর্তীতে ভুল বিভ্রান্তির কারণ হতে পারে।