সংলগ্ন পার্টিশনগুলিকে ওভাররাইট করতে ডিডি করতে পারে


15

হায়

dd if=/dev/zero of=somepartition bs=512

এছাড়াও পার্টিশন মুছা somepartitionবা শেষে বন্ধ somepartition?


5
পার্টিশন প্রতিনিধিত্বকারী ব্লক ডিভাইসগুলি, উদাহরণস্বরূপ /dev/sda1, কার্নেল দ্বারা এমনভাবে তৈরি করা হয়েছিল যাতে তাদের মাধ্যমে সংলগ্ন স্টোরেজ অ্যাক্সেস করা অসম্ভব (ধরে নেওয়া যায় যে কার্নেলটি শেষ বার পড়ার পরে পার্টিশন টেবিলটি পরিবর্তন করা হয়নি)। আপনি যদি সেভাবে সংলগ্ন স্টোরেজ অ্যাক্সেস করতে পারেন তবে এটি একটি বিশাল বাগ হিসাবে বিবেচিত হবে।
ডেভিড ফোস্টার

উত্তর:


18

এর সাথে একটি পার্টিশন ওভাররাইট করুন dd

ddএকটি খুব শক্তিশালী তবে বিপজ্জনক হাতিয়ার। এটি আপনি প্রশ্ন ছাড়াই যা করতে বলছেন তা করে। সুতরাং যদি আপনি এটি পরিবারের ছবিগুলি মুছতে বলেন, ... এবং এটি দূরে একটি ছোটখাটো টাইপ ত্রুটি।

তবে আপনি যদি চেক করেন এবং ডাবল-চেক করেন তবে আপনি এটি ব্যবহার করতে পারেন।

dd if=/dev/zero of=somepartition bs=512

বা আমি পরামর্শ দিতে হবে

dd if=/dev/zero of=/dev/sdxn bs=4096

xড্রাইভ লেটারটি কোথায় এবং nপার্টিশন নম্বর এবং ব্লকের আকার 4096 বাইট লেখার প্রক্রিয়াটিকে দ্রুততর করে তোলে।

এই ক্ষেত্রে আপনি একটি পার্টিশন লিখতে গুরুত্বপূর্ণ । আপনি যদি পুরো ড্রাইভে (ড্রাইভের শেষ প্রান্তে) লিখেন তবে পুরো ড্রাইভটি /dev/sdxওভাররাইট করা হবে। পার্টিশনটি লিখতে পার্টিশন শেষে বাধা দেওয়া হবে এবং এর পিছনে পার্টিশন সংরক্ষণ করা হবে। (আমি এখন লুবুন্টু 16.04 এলটিএসে একটি ইউএসবি পেনড্রাইভে পরীক্ষা করেছি , তাই আমি জানি যে এটি এর মতো কাজ করে))

বর্ধিত পার্টিশনের ব্যতিক্রম

একটি এমএসডিওএস পার্টিশন টেবিলটিতে চারটির অধিক পার্টিশন থাকার জন্য বর্ধিত পার্টিশনের (যা লজিক্যাল পার্টিশনের কনটেইনার) ব্যতিক্রম রয়েছে। এটি নিম্নলিখিত লিঙ্কে বর্ণিত হয়েছে,

আমি কি ডিডি ব্যবহার করে 'বর্ধিত' পার্টিশনের চিত্র তৈরি করতে পারি?

তবে আরও একটি সমস্যা আছে। আমি আপনার আদেশটি পরীক্ষার পরিবেশে পরীক্ষা করেছি এবং যখন আমি এটি একটি বর্ধিত পার্টিশনের চিত্র তৈরি করতে চাইতাম তখন কেবলমাত্র একটি কিবিবাইট (1024 বাইট) পড়তাম।

আমি এটি এখন লুবুন্টু 16.04 এলটিএস-এর একটি ইউএসবি পেনড্রাইভেও পরীক্ষা করেছি এবং এটি লেখার ক্ষেত্রেও (পাশাপাশি পড়ার ক্ষেত্রেও) প্রযোজ্য। শুধুমাত্র প্রথম কিবিবাইটটি ওভাররাইট করা হয়।

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


আমি ইতিমধ্যে গ্রহণ করেছি, তবে এটি যদি হয় তবে এটি সঠিক উত্তর হওয়া উচিত।
25:37

3
@ লজিকব্রেকার, সম্ভবত আপনি গ্রহণটি সরিয়ে নিতে পারেন। তবে এটি গুরুত্বপূর্ণ নয়। এটি কীভাবে আপনি ব্যবহার করবেন ddএবং এটি ঝুঁকিপূর্ণ তা বোঝা আরও গুরুত্বপূর্ণ , যাতে এটি ব্যবহার করার সময় আপনি খুব সতর্ক হন। সৌভাগ্য :-) সাধারণভাবে, আপনার সর্বদা সমস্ত ফাইলের ব্যাকআপ থাকা উচিত , যা আপনি হারাতে পারবেন না।
সুডোডাস

1
খালি পার্টিশনে লেখার সময় আপনার কাছে অনেক বিকল্প নেই। আমি স্থানান্তরিত করেছি, অন্যথায় এটি অন্যদের জন্য বিভ্রান্তিকর হবে।
লজিকব্রেকার

1
এ কারণেই ব্যবহারকারীরা সাধারণত / dev / * "ফাইলগুলি" অ্যাক্সেস করতে পারে না।
থরবজর্ন রাভন অ্যান্ডারসন

1
যদি কোনও ব্যাকআপ না নিয়ে এটিই আপনার পরিবারের ফটোগুলির একমাত্র অনুলিপি হয় তবে আপনি চুরি, আগুন, দুর্ঘটনা বা সাধারণ হার্ডওয়্যার ব্যর্থতায় যে কোনও সময় তাদের হারাতে পারবেন :-)
ইউজার ৩363639৯ ২২

4

একটি পার্টিশন ডিভাইসে লেখার জন্য ডিডি বা অন্য কোনও কিছুই partition পার্টিশনের বাইরে লেখা হবে না। একটি একক পার্টিশনের বাইরে কোনও প্রভাব ফেলতে আপনাকে হোলিডিস্ক ডিভাইসটি ব্যবহার করতে হবে।

(ক্যাভেট: যদি না আপনার ডিস্কের ওভারল্যাপিং পার্টিশনগুলির সাথে একটি পার্টিশন টেবিল থাকে, যা কখনই ঘটে না))


3
আরেকটি সতর্কতা: আপনি যদি এলভিএম এর মতো কিছু ব্যবহার করেন তবে একটি দৈহিক ভলিউমে লেখা অবশ্যই অনেকগুলি লজিক্যাল ভলিউমকে প্রভাবিত করতে পারে।
ম্যাক্সপাম

4

আমি মনে করি আপনার প্রশ্নটি কীভাবে dd(এবং বাস্তবে ইউনিক্সের মতো অপারেটিং সিস্টেমগুলি সাধারণভাবে কাজ করে) সে সম্পর্কে একটি মৌলিক ভুল বোঝাবুঝির উপর ভিত্তি করে :

ddপার্শ্ববর্তী পার্টিশনগুলি ওভাররাইট ddকরতে পারে না, পার্টিশন, পিরিয়ড ওভাররাইট করতে পারে না বলেই ।

ddকেবল ফাইলগুলিতে লেখেন । এটাই.

এখন, আপনি যদি এমন ddকোনও ফাইল পাস করেন যা একাধিক পার্টিশন প্রতিনিধিত্ব করে , তবে সেই ফাইলটিdd ওভাররাইট হবে । তবে ddসেক্ষেত্রে, এটি বিভাজনের শেষের দিকে লেখেনি। ddএখনও ফাইলের শেষে এবং কেবল ফাইলের শেষ না হওয়া পর্যন্ত লিখতে হবে ।

তবে, আপনি যদি এমন ddএকটি ফাইল পাস করেন যা কেবল একটি বিভাজনকে উপস্থাপন করে, তবে ddএই পার্টিশনের শেষটি লেখবে না। আবার এর সাথে কিছু করার নেই ddddআপনি যে ফাইলটি লিখতে বলছেন তা কেবল লিখে দেয়। এই ফাইলটি একটি একক পার্টিশনের প্রতিনিধিত্ব করে এমন ঘটনা (এই ক্ষেত্রে) কার্নেলের ব্লক ডিভাইস ড্রাইভার দ্বারা নিশ্চিত করা হয়েছে। ddএর সাথে কিছু করার নেই।

সুতরাং, সংক্ষেপে: ddফাইলগুলিতে লেখেন। এই ফাইলগুলি কী উপস্থাপন করে তা কোনও ddউদ্বেগের বিষয় নয়। ddপার্টিশন সম্পর্কে কিছুই জানে না।


এমএমএইচ ... ডিডি শুধুমাত্র ফাইলগুলিতে লেখার সাথে সাথে আপনি এটি কাঁচা পার্টিশনে লেখার জন্য ব্যবহার করতে পারবেন না।
লজিকব্রেকার

1
সঠিক। আপনি ddকাঁচা পার্টিশনে লেখার জন্য ব্যবহার করতে পারবেন না । আপনি কেবল ফাইলগুলিতে লিখতে পারেন। আপনি যা করতে পারেন যা ব্লক ডিভাইস ফাইলের অবশ্যই লিখে প্রতিনিধিত্ব করে একটি পার্টিশন (যেমন /dev/sda1), কিন্তু আপনি একটি কাঁচা পার্টিশন না লিখতে পারেন। এবং যেহেতু আপনি কেবল একটি পার্টিশনকে প্রতিনিধিত্ব করে এমন একটি ফাইলে লিখতে পারেন, আপনি পার্টিশনের শেষের আগে লিখতে পারবেন না, কারণ ফাইলটি কেবলমাত্র পার্টিশনকেই উপস্থাপন করে, পার্টিশনকে নয় এবং শেষের কিছুটা আগেও।
Jörg ডব্লু মিটাগ

3
জর্গ ইউনিক্স দর্শনের অন্যতম প্রধান ধারণাকে বোঝায় - "সবকিছুই একটি ফাইল"। যেমন, কার্নেল প্যাটিশন, ডিভাইস, পোর্ট ইত্যাদি ফাইল হিসাবে উপস্থাপন করে। ফলস্বরূপ, প্রতিটি প্রোগ্রাম যা একটি ফাইলে লিখতে পারে সেগুলি একটি পার্টিশন বা কোনও ডিভাইসে লিখতে ব্যবহার করা যেতে পারে। পার্টিশন সীমানা কার্যকর করা কার্নেলের কাজ। আপনি /dev/sdaআপনার টেক্সট এডিটরটি খুলতে এবং ডেটা পরিবর্তন ddকরতে পারেন, পার্টিশন অ্যাক্সেস করতে সক্ষম হওয়ার দিক থেকে অন্য কোনও প্রোগ্রামের থেকে আলাদা নয়। খুব ভাল উত্তর!
সের্গেই

1

একটি বিপজ্জনক, তবে বিরল বিশেষ পরিস্থিতি রয়েছে যেখানে এটি নন-বগি ব্লক ডিভাইস ড্রাইভারদের সাথেও ঘটতে পারে:

  • ডিস্কের পার্টিশন টেবিলটি এমনভাবে পরিবর্তন করা হয়েছে যে পার্টিশন এক্সটিকে আগের চেয়ে নিম্ন সীমানায় শেষ করতে পুনরায় আকার দেওয়া হয়। এর পিছনের পার্টিশন y এর নীচে বাউন্ডার উপরের শুরুটি পুনরায় আকার দেওয়া হয়, বা একটি নতুন পার্টিশন y স্থানটিতে যুক্ত করা হয়।
  • পার্টিশন y প্রাসঙ্গিক ডেটা দিয়ে পূর্ণ করা যায় যা পার্টিশন টেবিলের চেয়ে আলাদা, যেমন পুরো ডিস্ক ব্লক ডিভাইসে স্কিপ / গণনা বিকল্পের সাথে ডিডি ব্যবহার করে (যেমন / dev / sda)
  • পার্টিশন টেবিলটি পুনরায় পড়তে কার্নেলকে যে আইওটিটিএল দেওয়া হবে তা জারি করা হয় না, বা ব্যস্ত ডিভাইসের কারণে ব্যর্থ হয়
  • পার্টিশন এক্স এমন কোনও প্রক্রিয়া দ্বারা লিখিত হয় যা এটির ত্রুটি শর্তটি আঘাত না করা পর্যন্ত এটি লেখার চেষ্টা করে।

0

আপনাকে ডিডির সাথে সাবধানতা অবলম্বন করতে হবে যেন আপনি কোনও ভুল করেছেন আপনি যার চেয়ে বেশি দর কষাকষি করছেন সেটির উপর নির্ভর করে এবং আপনি ডিডি কী ব্যবহার করছেন তার উপর নির্ভর করে (ওপি তার ডিডি ব্যবহারে অস্পষ্ট ছিল এবং ডিডির সঠিক বাক্য গঠন) কমান্ড)।

আপনি যদি একটি পার্টিশন নির্দিষ্ট করে থাকেন তবে এটি পার্টিশনটি পূর্ণ না হওয়া অবধি এই পার্টিশনে লিখবে।

আপনি যদি ভুল করে এবং পুরো ড্রাইভটি রাখেন, উদাহরণস্বরূপ = / dev / sda, dd আপনার পার্টিশন সারণীকে উপেক্ষা (এবং ওভাররাইট করা) শেষ করতে পুরো ড্রাইভটি লিখতে শুরু করবে।

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

dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file

আপনি যা করছেন তার উপর নির্ভর করে আপনি ফাইলগুলি সুরক্ষিতভাবে মুছতে বিকল্প সরঞ্জাম ব্যবহার করতে চাইতে পারেন। নিরাপদ উপায়ে ফাইল (গুলি) মুছবেন কীভাবে দেখুন ? বিকল্পের জন্য।


6
আপনি / dev / sdcX এ লিখতে এবং পার্টিশন সীমানা জুড়ে লিখতে পারলে পার্টিশন টেবিলটিকে উপেক্ষা করে ডিডি হবে না - কার্নেলের ব্লক ডিভাইস ড্রাইভারটি বগি হওয়া এবং পার্টিশন টেবিলটিকে উপেক্ষা করে করা হবে।
রেক্যান্ডবোনম্যান

1
@ সুডডাস ddযে নিচু স্তরের নয়। আসলে লোকেরা ব্যবহার করে বেশিরভাগ জিনিস ddঠিক একইভাবে করা যেত cat। আসলে catএটি সামান্য দ্রুত কারণ এটি ডিফল্টর চেয়ে বড় ব্লক ব্যবহার ddকরে। নিম্ন স্তরের সমস্ত কোড কার্নেলে রয়েছে। এবং ড্রাইভার আপনি ব্যবহার করছেন ddবা ব্যবহার করছেন কিনা তা সত্যিই যত্ন করে না cat
ক্যাস্পার্ড

1
@ সুদোডাস - বিভ্রান্তির জন্য দুঃখিত, আমি যতটা ইচ্ছা করেছিলাম তেমন পরিষ্কার ছিল না। ডিডি অবশ্যই লেখা চালিয়ে যেতে পারে, আপনি যা বলছেন তার উপর নির্ভর করে। dd if=/dev/zero of=/dev/sda bs=512 count=1বা dd if=/dev/zero of=/dev/sda bs=512উদাহরণ। দ্বিতীয় কমান্ডের সাহায্যে এটি লিখতে থাকবে এবং পার্টিশন টেবিলটিকে "উপেক্ষা" করে পুরো ডিস্কটি পূরণ করবে। আপনি যদি একটি পার্টিশন নির্দিষ্ট dd if=/dev/zero of=/dev/sda1করে থাকেন তবে এটি পার্টিশনের বাইরে যাবে না। বাছাইয়ের উপর নির্ভর করে আপনি ডিডি দিয়ে কী করতে চান।
প্যান্থার

1
@ প্যান্থার প্রশ্নটি সুনির্দিষ্টভাবে বলেছে of=somepartition, তাই আপনি যেখানে পুরো ডিস্ক ডিভাইসে লেখেন তেমনটি প্রয়োগ হয় না। ddডিভাইস ড্রাইভারের সীমাবদ্ধতাগুলি পেতে পারে না।
বার্মার

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