ddহয় পরিকল্পিত পরিবর্তনশীল ইনপুট আকারের থেকে পড়ার জন্য এটি সাধারণত আপনার নিষ্পত্তি সেরা টুল আপনি এটি সম্পন্ন প্রয়োজন হলে - অবরুদ্ধ করার জন্য অবিলম্বে কারণ ddবর্তমান ছবি আটকে যাবে না কিছু ভবিষ্যতে মধ্যে সার্চ write() (যদি না আপনি খুব স্পষ্টভাবে এটি আইবিএস চেয়ে বড় obs সঙ্গে যে ভাবে কনফিগার) , কিন্তু পরিবর্তে write()সবকিছু যত তাড়াতাড়ি সার্চ যেমন read()এটি গুলি (এবং ঐচ্ছিকরূপে এটা প্রক্রিয়া) ।
এখানে কয়েকটি গুরুত্বপূর্ণ সংজ্ঞা দেওয়া হল :
ibs=expr
- বাইপগুলিতে ইনপুট ব্লকের আকার নির্দিষ্ট করুন (ডিফল্ট 512) ।
expr
obs=expr
- বাই দ্বারা আউটপুট ব্লকের আকার নির্দিষ্ট করুন (ডিফল্ট 512) ।
expr
bs=expr
- উভয় ইনপুট এবং আউটপুট ব্লক মাপগুলি
exprবাইট, সুপারসিডিং ibs=এবং এ সেট করুন obs=। কোন রূপান্তর ছাড়া অন্য তাহলে sync, noerrorএবং notruncউল্লেখ করা হয়, প্রতিটি ইনপুট ব্লক সংক্ষিপ্ত ব্লক সমষ্টি ছাড়া একটি একক ব্লক হিসাবে আউটপুট অনুলিপি করা হবে।
সুতরাং আপনি যখন দেখেন যে ibsএবং কখন সংজ্ঞাযুক্ত তখন obsততটাই প্রাধান্য পায় - তবে অন্যথায়, যদি আপনি নির্দিষ্ট হন তবে হয় বা হয় না eitherbsibsobscbs
এখানে একটি উদাহরণ রয়েছে যার ibsমধ্যে সবচেয়ে গুরুত্বপূর্ণ। আপনি কত শীঘ্রই /dev/randomপুলটি ভরা হয়েছে তা ট্র্যাক করতে চাইলে আপনি এই জাতীয় কিছু করতে পারেন ...
dd "ibs=$size" conv=sync "count=$lmt" \
if=/dev/random of="$somefile"
যতক্ষণ না if=টার্গেটটি একেবারে পঠনযোগ্য, এর ফলস্বরূপ সর্বদা একই আকারের আউটপুট ফাইল ddহবে কারণ syncনালাগুলিতে পঠনগুলিতে ব্লকগুলি হরনাইজ করবে । অন্য কথায়, যদি বারের dd read()ইনপুট-ব্লকের জন্য গুলি হয় $((size=10)) $((count=5))এবং read()ফাইলটি 2 বাইট ফেরত দেয় তবে 8 বাইট, তারপরে 12 বাইট, তারপরে 2 বাইট, তারপরে 4 বাইট ddতার আউটফাইলে এমন কিছু লিখবে
2 read bytes 8NULs \
8 read bytes 2NULs \
10 read bytes 0NULs \
4 read bytes 6NULs \
4 read bytes 6NULs
... কারণ dd, ডিফল্টরূপে, দেরি করে না । সুতরাং যদি আপনাকে স্রোতে ট্র্যাক করতে এবং অন্য কোনও প্রক্রিয়াটির লেখার সীমানা ছাড়ানোর প্রয়োজন হয় তবে এটি আপনার ddজন্য সরঞ্জাম।
আপনি যদি নিয়মিত ফাইলে কিছু পরিমাণ ডেটা লিখে থাকেন তবে এখানে তৈরি অন্যান্য বিবৃতিগুলির বিপরীতে, আপনি এটির ddজন্য এবং মোটামুটি সহজেই ব্যবহার করতে পারেন - তবে আপনার একাধিক এবং একটি নির্ভরযোগ্য ব্লকিং ফ্যাক্টর প্রয়োজন ।
উদাহরণস্বরূপ, যদি আপনি এটি করেন:
{ dd ibs="$size" obs="${size}x$block_factor" |
dd bs="${size}x$blockfactor" "count=$lmt"
} <infile >outfile
... প্রথমটি ddযতটা ibs="$size"ইনপুট ব্লক প্রয়োজন ততটুকুভাবে এটির জন্য এবং দ্বিতীয়টির মধ্যে পাইপের obs="${size}x$block_factor"প্রতিটি জন্য কমপক্ষে একটি আউটপুট ব্লক পূরণ করতে write()হবে dd। এর অর্থ হ'ল দ্বিতীয়টি ddআউটপুটটিকে নির্ভরযোগ্যতার সাথে সীমাবদ্ধ করতে পারে count="$lmt"কারণ write()প্রথমটি তৈরির সমস্ত তার i / o ব্লকসাইজের সাথে মিলবে - এটি তৈরি করতে প্রথমে কতজনকে অবশ্যই করতে হবে তা নির্বিশেষে ।read()dd
এবং এটিdd হ'ল আপনি কীভাবে নির্ভরযোগ্যভাবে পাইপ বা অন্যান্য ধরণের বিশেষ ফাইলগুলি পড়তে পারেন - অল্প অল্প গণিত সহ।
/dev/randomআপনি চান সংখ্যা সংখ্যা জেনারেট করার জন্য পর্যাপ্ত এনট্রপি না থাকলে ব্লক হবে। এটি কেবলমাত্র উচ্চমানের psuedo র্যান্ডম "র্যান্ডমনেস" র পরিমাণ সংগ্রহ করতে সময় নেয় ... হয়/dev/urandomকম এলোমেলো "এলোমেলো" মানের জন্য ব্যবহার করুন, বা আপনার এন্ট্রপি পুলটি পরীক্ষা করুন (একটি লুপে, এবং প্রয়োজন হিসাবে অপেক্ষা করুন) ...