বৈশিষ্ট থেকে :
- তাহলে
bs=
expr
প্রতীক উল্লেখ করা হয় এবং কোন ধর্মান্তর ছাড়া অন্য sync
, noerror
অথবা notrunc
অনুরোধ করা হয়, ডাটা প্রতিটি ইনপুট ব্লক থেকে ফিরে একটি পৃথক আউটপুট ব্লক হিসেবে লেখা যেতে হইবে; যদি read()
পুরো ব্লকের চেয়ে কম রিটার্ন দেয় এবং sync
রূপান্তরটি নির্দিষ্ট না করা হয়, ফলস্বরূপ আউটপুট ব্লকটি ইনপুট ব্লকের সমান আকারের হবে।
সুতরাং এটি সম্ভবত আপনার বিভ্রান্তির কারণ। হ্যাঁ, কারণ dd
হয় পরিকল্পিত ব্লক, ডিফল্ট অনুসারে আংশিক জন্য read()
আংশিক 1: S 1 ম্যাপ করা হবে write()
গুলি, বা অন্য sync
উপর লেঙ্গুড় প্যাডিং NUL বা স্থান অক্ষর আউট ঘ bs=
যখন আকার conv=sync
নির্দিষ্ট করা হয়েছে।
এর অর্থ এটি প্রতিটি dd
ক্ষেত্রে ডেটা অনুলিপি করার জন্য ব্যবহার করা নিরাপদ (ডাব্লু / আংশিক পড়া বা লেখার কারণে দুর্নীতির ঝুঁকি নেই) তবে এটি একটি count=
যুক্তি দ্বারা নির্বিচারে সীমাবদ্ধ , কারণ অন্যথায় dd
আনন্দের সাথে write()
এটির আকারটি একই আকারের ব্লকগুলিতে আসবে এটির সম্পূর্ণরূপে read()
না আসা পর্যন্ত যার মধ্যে এটির ইনপুট ছিল read()
। এমনকি এই সতর্কীকরণ হয় একমাত্র সত্য যখন bs=
নির্দিষ্ট করা বা obs=
হয় না নির্দিষ্ট বৈশিষ্ট রাজ্যে ঠিক পরের বাক্য হিসাবে:
- তাহলে
bs=
expr
প্রতীক নির্দিষ্ট করা না থাকে, অথবা একটি রূপান্তর ছাড়া অন্য sync
, noerror
অথবা notrunc
অনুরোধ, ইনপুট প্রক্রিয়া হলে এবং দেখার হইবে পূর্ণ আকারের আউটপুট ব্লক মধ্যে সংগৃহীত পর্যন্ত ইনপুটের শেষে পৌঁছে গেছেন করা হয়।
ibs=
এবং এবং বা obs=
যুক্তি ছাড়া এটি কোনও বিষয় নয় - কারণ ibs
এবং obs
উভয়ই ডিফল্টরূপে একই আকার। তবে আপনি উভয়ের জন্য বিভিন্ন আকারের নির্দিষ্ট করে এবং উল্লেখ না করে ইনপুট বাফারিং সম্পর্কে স্পষ্ট পেতে পারেন (কারণ এটি অগ্রাধিকার নেয়) ।bs=
উদাহরণস্বরূপ, যদি আপনি এটি করেন:
IN| dd ibs=1| OUT
... তারপর একটি POSIX dd
হবে write()
দ্বারা 512 বাইটের অংশ সংগ্রহ প্রত্যেক একেলা read()
একটি একক আউটপুট ব্লক মধ্যে বাইট।
অন্যথায়, যদি আপনি ...
IN| dd obs=1kx1k| OUT
... একটি POSIX dd
হবে read()
সর্বাধিক একটি সময়ে 512 বাইট, কিন্তু write()
প্রত্যেক মেগাবাইট আকারের আউটপুট ব্লক (কার্নেল যার ফলে এবং সম্ভবত গত ছাড়া - কারণ যে ফাইলের শেষে থাকবে) মধ্যে ইনপুট সংগ্রহ করে পূর্ণ পূর্ণ আকারের আউটপুট ব্লক ।
এছাড়াও স্পেক থেকে, যদিও:
count=n
- শুধুমাত্র এন ইনপুট ব্লক অনুলিপি করুন।
count=
i?bs=
ব্লকগুলিতে মানচিত্রগুলি , এবং count=
বহনযোগ্যভাবে একটি স্বেচ্ছাসেবী সীমা পরিচালনা করার জন্য আপনার দু'টি দরকার dd
। দু'টি দিয়ে এটি করার সবচেয়ে কার্যকরী উপায় dd
হ'ল একটির আউটপুটটিকে অন্যের ইনপুটটিতে পাইপ করা, যা অবশ্যই আমাদের মূল ইনপুট প্রকার নির্বিশেষে একটি বিশেষ ফাইল পড়ার / লেখার ক্ষেত্রের মধ্যে ফেলে দেয় ।
একটি আইপিসি পাইপ এর অর্থ [io]bs=
দাঁড়ায় যে যখন আরোগুলি নির্দিষ্ট করে থাকে , নিরাপদে এটি করার জন্য আপনাকে অবশ্যই এই মানগুলি সিস্টেমের নির্ধারিত PIPE_BUF
সীমাতে রাখতে হবে । পসিএক্স জানিয়েছে যে সিস্টেমের কার্নেলটি কেবলমাত্র নির্ধারিত সীমার মধ্যেই পারমাণবিক read()
ও write()
এর গ্যারান্টি দিতে হবে । POSIX গ্যারান্টী বা নিশ্চয়তা হতে কমপক্ষে ...PIPE_BUF
limits.h
PIPE_BUF
{_POSIX_PIPE_BUF}
- পাইপে লেখার সময় সর্বাধিক সংখ্যক বাইট যা পরমাণু হওয়ার নিশ্চয়তা রয়েছে।
- মান: 512
... (এটি ডিফল্ট dd
আই / ও ব্লকসাইজ হিসাবেও ঘটে ) তবে আসল মানটি সাধারণত কমপক্ষে 4 কে হয়। একটি আপ-টু-ডেট লিনাক্স সিস্টেমে এটি ডিফল্টরূপে k৪ কে।
সুতরাং আপনি যখন আপনার dd
প্রক্রিয়াগুলি সেট আপ করবেন তখন আপনাকে তিনটি মানের উপর ভিত্তি করে একটি ব্লক ফ্যাক্টরের উপর এটি করা উচিত :
- বিএস = (obs =
PIPE_BUF
বা আরও কম)
- n = মোট কাঙ্ক্ষিত সংখ্যা বাইট
- গণনা = এন / বিএস
ভালো লেগেছে:
yes | dd obs=1k | dd bs=1k count=10k of=/dev/null
10240+0 records in
10240+0 records out
10485760 bytes (10 MB) copied, 0.1143 s, 91.7 MB/s
dd
অ-সন্ধানযোগ্য ইনপুটগুলি পরিচালনা করতে আপনাকে i / ow / সিঙ্ক্রোনাইজ করতে হবে। অন্য কথায়, পাইপ-বাফারগুলি স্পষ্ট করে তুলুন এবং এগুলি কোনও সমস্যা হতে পারে না। এটা কি dd
জন্য। এখানে অজানা পরিমাণটির yes
বাফার আকার - তবে আপনি যদি এটির সাথে পরিচিত পরিমাণে অন্যকে অবরুদ্ধ করেন dd
তবে কিছুটা অবহিত গুণটি dd
তথ্য অনুলিপি করার জন্য নিরাপদ করতে পারে (আংশিক পড়া বা লেখার কারণে দুর্নীতির ঝুঁকি নেই) এমনকি count=
যেকোনও পসিক্স সিস্টেমে নির্বিচারে ইনপুট ডব্লু / ডাব্লু / কোনও স্বেচ্ছাসেবিত ইনপুট টাইপ করার সময় এবং একক বাইট না হারিয়ে when
এখানে পসিক্স স্পেকের একটি স্নিপেট রয়েছে :
ibs=
expr
- বাইপগুলিতে ইনপুট ব্লকের আকার নির্দিষ্ট করুন (ডিফল্ট 512) ।
expr
obs=
expr
- বাই দ্বারা আউটপুট ব্লকের আকার নির্দিষ্ট করুন (ডিফল্ট 512) ।
expr
bs=
expr
- উভয় ইনপুট এবং আউটপুট ব্লক মাপগুলি
expr
বাইট, সুপারসিডিং ibs=
এবং এ সেট করুন obs=
। কোন রূপান্তর ছাড়া অন্য তাহলে sync
, noerror
এবং notrunc
উল্লেখ করা হয়, প্রতিটি ইনপুট ব্লক সংক্ষিপ্ত ব্লক সমষ্টি ছাড়া একটি একক ব্লক হিসাবে আউটপুট অনুলিপি করা হবে।
আপনি এর আরও কিছু এখানে আরও ভালভাবে ব্যাখ্যা করতে পারেন ।