`Dd` কমান্ডের সাথে সিঙ্ক বিকল্পটি কেন ব্যবহার করা হয়?


13

এই পৃষ্ঠায় নির্দেশাবলী অনুসরণ করে , পৃষ্ঠাটি শেষে একটি ddআদেশ এবং একটি syncবিকল্প দেখিয়েছে । কমান্ডটি নিম্নলিখিত:

xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M sync

আমি জানি এটি কী ddএবং কীভাবে কাজ করে তবে আমি এর syncসাথে বিকল্পটি কখনও শুনিনি বা ব্যবহার করি নি এবং এর ম্যানুয়াল পৃষ্ঠার এন্ট্রিটি হ'ল:

sync   pad every input block with NULs to  ibs-size;  when  used  with
       block or unblock, pad with spaces rather than NULs

এটি কী NULএবং কেন এটি প্যাড করা হয় ibs-sizeএবং কেন ডেটা ব্লকগুলি প্যাডিংয়ে বিরক্ত করে এবং কমান্ডের সাহায্যে syncবিকল্পটি ব্যবহার করে dd? কেন এটি সহজ এবং সহজ রাখছেন না?

যখন আমি syncকমান্ডটি যথাযথ অবস্থান এবং মানগুলির সাথে চালানোর চেষ্টা করি তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

dd: unrecognized operand ‘sync’
Try 'dd --help' for more information. 

উত্তর:


21

আপনি আদেশটি অপ্রকাশিত করছেন। এটা:

xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M 
sync

syncএখানে একটি পৃথক কমান্ড। দেখুন man 1 sync:

NAME
       sync - flush file system buffers

SYNOPSIS
       sync [OPTION]

DESCRIPTION
       Force changed blocks to disk, update the super block.

আপনি কী ক্যাচিংয়ের কথা ভাবেন একবার তা কেন ব্যবহার করা উচিত।

হিসাবে ddবিকল্পটি পড়া, এটির জন্য একটি মান বিকল্প :conv

Each CONV symbol may be:
   ascii  from EBCDIC to ASCII
   ...
   sync   pad every input block with NULs  to  ibs-size;  when  used  with
          block or unblock, pad with spaces rather than NULs

যদি এটি ব্যবহৃত হয় (যা এটি নয়) তবে এটি ব্যবহার করা হবে:

dd ... conv=sync

3
ভাল উত্তর, খুব বিস্তারিত। আপনি এমনকি dd ... conv=syncযুক্তি বর্ণনা যে খুব ভাল ।
বাইট কমান্ডার

তাদের আপনাকে ঠাট্টা করবেন না! ;-) ভাল উত্তর: আপনি যে সমস্যাটি দেখেছি তাও দেখেছি। > :-) +1
Fabby

1
এছাড়াও conv=syncবিকল্পের বর্ণনা থেকে এটি পরিষ্কার হয়ে যায় যে এটি কেন এটির জন্য ব্যবহৃত হয় না। সর্বোপরি এটি কিছুই করবে না, অনুলিপিটি অনুলিপি করার সময় চিত্রটিকে দূষিত করবে।
ক্যাস্পারড

5
সত্যিই নির্দেশাবলী DD বিকল্পের জন্য কল করা উচিত oflag=fsync(যা আউটপুট DD লিখেছেন flushes) একটি পরিবর্তে syncকমান্ড (যা flushes সবকিছু সিস্টেমে।
psusi

এই উত্তরটি বিভ্রান্তিকর। ডিডি সহ, এবং syncউভয় বা বিকল্পগুলির পক্ষে একটি যুক্তি । conviflagoflag
ড্যান লোয়েনেহার্জ

3

ডিফল্টরূপে, ডিডি একবারে ডেটাতে একটি ব্লক পড়বে, সম্ভবত ব্যবহারকারীের চেয়ে সংক্ষিপ্ত ব্লকে পড়া হবে, ফাইলের শেষে বা উত্স ডিভাইসের আচরণের কারণে; একে আংশিক রেকর্ড বলা হয় । এরপরে এটি এমন একটি ব্লক লিখবে যা এটি পড়ার পরিমাণের সমান আকার।

নির্দিষ্ট গণনা না হওয়া অবধি ডিডি এটির পুনরাবৃত্তি করবে, বা এটি ইনপুটটিতে ইওফ, বা ইনপুট বা আউটপুটে ত্রুটি দেখবে। এটি শেষ হয়ে গেলে, ডিডি এটি পড়ে এবং লিখেছেন এমন সম্পূর্ণ এবং আংশিক রেকর্ডের সংখ্যা রিপোর্ট করে।

এই আচরণটি কোনও ফাইল সিস্টেমের মধ্যে বা একটি টিসিপি নেটওয়ার্ক সংযোগের ওপরে একটি সাধারণ ফাইল অনুলিপি করার জন্য সূক্ষ্ম, যেহেতু এটিকে বাইটের স্ট্রিম হিসাবে বিবেচনা করা হয়। তবে অন্যান্য ফাইলসিস্টেম অবজেক্টস যেমন কাঁচা ডিভিডি এবং চৌম্বকীয় টেপের জন্য রাইটিং মাপের প্রয়োজন হয় যা নির্দিষ্ট রেঞ্জের মধ্যে থাকে এবং কিছু পরিমাণে গোলাকার একাধিক হয় (যেমন 512 বা 2048 বাইট)। উদাহরণস্বরূপ, যদি আপনার কাছে এমন ডিস্ক চিত্র থাকে যা 63৩ 512-বাইট সেক্টরের 255 ট্র্যাক, এবং একটি টেপটিতে লিখতে চান যাতে 1024 বাইটের একটি ব্লক আকারের প্রয়োজন হয়, আপনাকে এমন কিছু করতে হবে

dd if=disk.img of=/dev/rmt0 bs=1k conv=sync

ডিডি শেষে 512-বাইট ব্লক লেখার চেষ্টা করবেন না তা নিশ্চিত করার জন্য। শেষে সংক্ষিপ্ত ব্লকটি শূন্য বা ফাঁকা দিয়ে প্যাড করা হবে। শূন্যের সাথে প্যাডিং একটি নিরাপদ, সাধারণ পছন্দ। ফাঁকা দিয়ে প্যাডে প্যাড করার বিকল্পটি ভিন্ন পরিস্থিতিতে কার্যকর - একটি ফাইলের পরিবর্তনশীল-দৈর্ঘ্যের লাইনগুলিকে স্থির-দৈর্ঘ্যের লাইনের সাহায্যে রূপান্তর করতে।


0

আমি খুঁজে পেয়েছি যে লিনাক্স সিস্টেম, ডিডি নয়, বাফারগুলিকে ক্যাশে করে। অতএব, যখন dd কমান্ডটি শেষ হয়, আমি সিঙ্ক হিসাবে চালিত করি

sudo dd if=my.downloaded.iso of=/dev/sd(?) bs=1M && sync

আমি বাফার ফ্লাশিংয়ের জন্য কোনও অভ্যন্তরীণ ডিডি বিকল্প ব্যবহার করি নি। সাধারণত যদিও আমি যখন কোনও ডিস্ট্রিবিউশনের ইউএসবি সংস্করণ তৈরি করি তখন কম্পিউটারে আমিই একমাত্র তাই আমার পোস্ট কমান্ড ক্ষতিগ্রস্থ হওয়ার বিষয়ে আমার কোনও মান নেই। যেহেতু আমি সিঙ্কটি && হিসাবে চালিত করি তাই সিঙ্কটি সুডোর অধিকারের সাথে সম্পন্ন হয় এবং আমি নিশ্চিত যে আমার তৈরি ইউএসবি সম্পূর্ণ হয়েছে।


0

আপনি syncআউটপুট জন্য বিকল্প ব্যবহার করতে পারেন , যা ddকোমন্ডে অন্তর্ভুক্ত রয়েছে , oflagপ্রতীক দ্বারা :

xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M oflag=sync
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.