সম্পূর্ণ ডিস্কে লেখার জন্য ডিডি কমান্ডের জন্য অপেক্ষা করুন


13

আইসো ফাইল থেকে বুটেবল ইউএসবি তৈরি করতে আমি ডিডি কমান্ডটি ব্যবহার করছি:

sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx bs=1M

এন্টার টিপানোর পরে এটি মুহুর্তে প্রস্থান করে এবং আমাকে দেয়:

915+0 records in 915+0 records out 959447040 bytes (959 MB) copied,
0.539375 s, 1.8 GB/s

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


4
আপনি চেষ্টা করেছেন sync?
চোরোবা

1
@ চোরোবা যদি সিস্টেমটি ইতিমধ্যে ফ্ল্যাশ ড্রাইভে ডেটা লিখিত থাকে তবে 'সিঙ্ক' চালানো কি বোধগম্য?
কিরিল ইভলেভ

আমি নিশ্চিত না, বাইট syncঅপেক্ষা করতে পারে।
চোরোবা

2
ddউদাহরণস্বরূপ কয়েকটি সিঙ্ক বিকল্পও রয়েছে conv=fsync। এটি বলেছিল, আমাকে /dev/sd*নিজে ড্রাইভের সাথে এটি ব্যবহার করতে হবে না । আপনি যদি আক্ষরিকভাবে /dev/sdxআমার অনুমান ব্যবহার করতেন আপনি /devএখন ( র‌্যামডিস্ক ) একটি অকেজো 959 এমবি ফাইল থাকতেন ...
frostschutz

1
@ ফ্রস্টসচুটজ আমি আমার ফ্ল্যাশ ড্রাইভের জন্য / এসডিসি ব্যবহার করেছি
কিরিল ইভলভ

উত্তর:


21

জনপ্রিয় বিশ্বাস থাকা সত্ত্বেও, ddএটি একটি সম্পূর্ণ সাধারণ কমান্ড, এটি catবা এর চেয়ে নিম্ন-স্তরের নয় cp। আপনার কমান্ডটি ডিস্ক ক্যাশে থেকে পড়ে এবং অন্য কোনও কমান্ডের মতো ডিস্ক বাফারগুলিতে লেখায়।

শারীরিক মিডিয়ায় ডেটা পুরোপুরি লিখিত আছে তা নিশ্চিত করার জন্য, আপনাকে কল করতে হবে sync। কমান্ডটি syncসমস্ত আউটপুট বাফারগুলিকে ডিস্কে ফ্লাশ করে। syncকমান্ডটি যখন ফিরে আসে, তখন ডেটা পুরোপুরি লেখা থাকে।

sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx bs=1M; sync

বেশিরভাগ সময়, আপনাকে কল করার দরকার নেই sync, কারণ একটি ফাইল সিস্টেম আনমাউন্ট করা একই কাজ করে। যখন umountকমান্ড আয়, অথবা যখন আপনি "বের করে নিন" ক্লিক করার পর একটি নিশ্চিতকরণ বার্তা পাবেন, বাফার ডিস্কে লিখিত হয়েছে। এখানে, আপনি মাউন্ট করা ফাইল সিস্টেমের মধ্যে না গিয়ে সরাসরি ডিস্কে লিখছেন, সুতরাং আপনার স্পষ্টভাবে বাফারটি ফ্লাশ করা দরকার।

মনে রাখবেন পরিবর্তে dd, আপনি ব্যবহার করতে পারেন tee। এর দুটি সুবিধা রয়েছে: টাইপোর কারণে উত্স এবং গন্তব্যকে উল্টানোর ঝুঁকি কম এবং এটি সম্ভবত সামান্য দ্রুত

<~/Desktop/ubuntu.iso sudo tee /dev/sdx >/dev/null; sync

1
"ইজেক্ট" বা "নিরাপদে অপসারণ" বোতাম / আইকন সম্পর্কে কীভাবে। "অপসারণে ঠিক আছে" বিজ্ঞপ্তি দেওয়ার আগে তারা কি সিঙ্ককে কল করবে না?
ব্যবহারকারী 68186

1
আপনি সম্ভবত ব্যবহার করতে চান sudo tee /dev/sdx >/dev/null, অন্যথায় অনুলিপি আউটপুটে ডেটা লিখিত হওয়ার কারণে অনুলিপি করার প্রক্রিয়াটি এখনও খুব ধীর হবে।
লেকেনস্টেইন

1
@ user68186 তারা syncকমান্ডটি কল করে না , তবে তারা হুডের নীচে একই কাজ করে।
গিলস 16'30

5
এই উত্তরটি ভুল। ছাড়া conv=fdatasync, ddকমান্ড পর্যন্ত ডেটা, ডিস্কে লেখা আছে যেমন ওপি অনুরোধ শেষ করার জন্য অপেক্ষা করে না। তদুপরি, syncকমান্ডটি একটি সিঙ্ক অপারেশনের সময়সূচী দেয়, তবে এটি তত্ক্ষণাত্ ফিরে আসে; এটি ডিস্কে ডেটা লিখিত না হওয়া পর্যন্ত ফিরে আসার অপেক্ষা করে না।
vy32

1
@ v32 আপনি ঠিক বলেছেন ddক্যাশে conv=fdatasyncইত্যাদি প্রবাহিত হওয়ার অপেক্ষা রাখে না তবে প্রাচীন-লিনাক্সে syncঅপেক্ষা না করা সম্পর্কে আপনি ভুল । আপনি দেখতে পারেন coreutils ' sync(8)উপার্জন sync(2)প্রাপ্ত syscallsync(2)মনুষ্যসৃষ্ট পৃষ্ঠা বলছেন "সংস্করণ 1.3.20 আগে লিনাক্স ইনপুট / আউটপুট ফেরার আগে সম্পন্ন করার জন্য অপেক্ষা করেন নি।" সুতরাং sync(8)ডিস্ক লেখার স্বীকৃতি না দেওয়া পর্যন্ত ফিরে আসবে না (বা একটি ত্রুটি ট্রিগার হয়)।
আনন

13

এটা চেষ্টা কর:

sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx conv=fdatasync bs=1m

conv=fdatasyncবলে ddনিশ্চিত করুন যে ডেটা ফিজিক্যাল ডিভাইস লেখা পেতে করতে বিশেষ অপশন ব্যবহার করতে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.