dd
হয় পরিকল্পিত পরিবর্তনশীল ইনপুট আকারের থেকে পড়ার জন্য এটি সাধারণত আপনার নিষ্পত্তি সেরা টুল আপনি এটি সম্পন্ন প্রয়োজন হলে - অবরুদ্ধ করার জন্য অবিলম্বে কারণ dd
বর্তমান ছবি আটকে যাবে না কিছু ভবিষ্যতে মধ্যে সার্চ write()
(যদি না আপনি খুব স্পষ্টভাবে এটি আইবিএস চেয়ে বড় obs সঙ্গে যে ভাবে কনফিগার) , কিন্তু পরিবর্তে write()
সবকিছু যত তাড়াতাড়ি সার্চ যেমন read()
এটি গুলি (এবং ঐচ্ছিকরূপে এটা প্রক্রিয়া) ।
এখানে কয়েকটি গুরুত্বপূর্ণ সংজ্ঞা দেওয়া হল :
ibs=
expr
- বাইপগুলিতে ইনপুট ব্লকের আকার নির্দিষ্ট করুন (ডিফল্ট 512) ।
expr
obs=
expr
- বাই দ্বারা আউটপুট ব্লকের আকার নির্দিষ্ট করুন (ডিফল্ট 512) ।
expr
bs=
expr
- উভয় ইনপুট এবং আউটপুট ব্লক মাপগুলি
expr
বাইট, সুপারসিডিং ibs=
এবং এ সেট করুন obs=
। কোন রূপান্তর ছাড়া অন্য তাহলে sync
, noerror
এবং notrunc
উল্লেখ করা হয়, প্রতিটি ইনপুট ব্লক সংক্ষিপ্ত ব্লক সমষ্টি ছাড়া একটি একক ব্লক হিসাবে আউটপুট অনুলিপি করা হবে।
সুতরাং আপনি যখন দেখেন যে ibs
এবং কখন সংজ্ঞাযুক্ত তখন obs
ততটাই প্রাধান্য পায় - তবে অন্যথায়, যদি আপনি নির্দিষ্ট হন তবে হয় বা হয় না eitherbs
ibs
obs
cbs
এখানে একটি উদাহরণ রয়েছে যার 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
কম এলোমেলো "এলোমেলো" মানের জন্য ব্যবহার করুন, বা আপনার এন্ট্রপি পুলটি পরীক্ষা করুন (একটি লুপে, এবং প্রয়োজন হিসাবে অপেক্ষা করুন) ...