चाहेंगे
dd if=/dev/zero of=somepartition bs=512
के बाद भी विभाजन मिटा somepartitionया अंत somepartition?
चाहेंगे
dd if=/dev/zero of=somepartition bs=512
के बाद भी विभाजन मिटा somepartitionया अंत somepartition?
जवाबों:
ddddएक बहुत शक्तिशाली लेकिन खतरनाक उपकरण है। यह वह करता है जो आप इसे बिना किसी प्रश्न के करने के लिए कहते हैं। इसलिए यदि आप इसे पारिवारिक चित्रों को पोंछने के लिए कहते हैं, ... और यह एक छोटी टाइपिंग त्रुटि है।
लेकिन अगर आप चेक और डबल चेक करते हैं, तो आप इसका उपयोग कर सकते हैं।
dd if=/dev/zero of=somepartition bs=512
या मैं सुझाव दूंगा
dd if=/dev/zero of=/dev/sdxn bs=4096
xड्राइव अक्षर कहां है और nविभाजन संख्या है और ब्लॉक आकार 4096 बाइट्स लिखने की प्रक्रिया को तेज करता है।
यह महत्वपूर्ण है कि आप इस मामले में एक विभाजन को लिखें । यदि आप पूरी ड्राइव (ड्राइव हेड एंड) /dev/sdxपर लिखते हैं, तो पूरी ड्राइव ओवरराइट हो जाएगी। लेकिन विभाजन को लिखना विभाजन के अंत में बाधित होगा और इसके पीछे के विभाजन संरक्षित रहेंगे। (मैंने अब ल्यूबंटू 16.04 एलटीएस में एक यूएसबी पेनड्राइव पर परीक्षण किया है , इसलिए मुझे पता है कि यह उसी तरह काम करता है।)
एक विस्तारित विभाजन के लिए एक अपवाद है (जो तार्किक विभाजन के लिए एक कंटेनर है, ताकि MSDOS विभाजन तालिका में चार से अधिक विभाजन हों)। यह निम्नलिखित लिंक में वर्णित है,
क्या मैं dd का उपयोग करके 'विस्तारित' विभाजन की छवि बना सकता हूं?
लेकिन एक और समस्या भी है। मैंने परीक्षण वातावरण में आपकी आज्ञा का परीक्षण किया, और dd ने केवल एक kibibyte (1024 बाइट्स) पढ़ा जब मैं चाहता था कि यह एक विस्तारित विभाजन की एक छवि बना सके।
मैंने अब ल्यूबंटू 16.04 एलटीएस में एक यूएसबी पेनड्राइव पर भी इसका परीक्षण किया, और यह लेखन (साथ ही पढ़ने के लिए) पर लागू होता है। केवल पहली kibibyte अधिलेखित है।
इसलिए संक्षेप में, प्राथमिक विभाजन और तार्किक विभाजन को अधिलेखित करना इस उत्तर में मुख्य विवरण के अनुसार काम करता है। लेकिन एक विस्तारित विभाजन को अधिलेखित करने के लिए इस पद्धति का उपयोग न करें क्योंकि केवल पहली किबिबाइट को ओवरराइट किया जाएगा। विस्तारित विभाजन के तार्किक विभाजन अब विभाजन तालिका के माध्यम से नहीं मिलेंगे, लेकिन उनमें संग्रहीत डेटा अभी भी हैं।
ddऔर यह जोखिम भरा है, ताकि आप इसका उपयोग करते समय बहुत सावधान रहें। सौभाग्य :-) सामान्य रूप से, आपके पास हमेशा सभी फ़ाइलों का बैकअप होना चाहिए , जिसे आप खो नहीं सकते।
एक विभाजन डिवाइस के लिए लिखता है कि विभाजन के बाहर नहीं होगा, dd या कुछ और के साथ। आपको एक विभाजन के बाहर किसी भी प्रभाव के लिए व्होलडिसक डिवाइस का उपयोग करने की आवश्यकता होगी।
(कैविएट: जब तक आपकी डिस्क में अतिव्यापी विभाजन के साथ विभाजन तालिका नहीं होती है, जो कभी नहीं होनी चाहिए।)
मुझे लगता है कि आपका सवाल एक बुनियादी गलतफहमी पर आधारित है कि कैसे dd(और वास्तव में यूनिक्स की तरह ऑपरेटिंग सिस्टम) काम करते हैं:
ddआसन्न विभाजन को अधिलेखित नहीं कर सकता, बस इसलिए कि ddविभाजन, अवधि को अधिलेखित नहीं कर सकता ।
ddबस फ़ाइलों को लिखता है । बस।
अब, यदि आपdd एक फाइल पास करते हैं जो कई विभाजनों का प्रतिनिधित्व करती है , तो उस फाइलdd को ओवरराइट कर देगा । लेकिन उस मामले में, यह ddविभाजन के अंत में नहीं लिख रहा है। ddअभी भी फ़ाइल के अंत तक लिखेंगे, और केवल फ़ाइल के अंत तक।
लेकिन, यदि आप ddएक फाइल पास करते हैं जो केवल एक विभाजन का प्रतिनिधित्व करती है, तो ddइस विभाजन के अंत में पिछले नहीं लिखेंगे। फिर, इससे कोई लेना-देना नहीं है dd। ddबस उस फ़ाइल को लिखता है जिसे आप इसे लिखना चाहते हैं। तथ्य यह है कि यह फ़ाइल एकल विभाजन का प्रतिनिधित्व करती है (इस मामले में) कर्नेल में ब्लॉक डिवाइस ड्राइवर द्वारा सुनिश्चित की गई है। ddउससे कोई लेना-देना नहीं है।
तो, संक्षेप में: ddफ़ाइलों को लिखता है। उन फ़ाइलों का प्रतिनिधित्व करते हैं, ddचिंता का कोई नहीं है । ddविभाजन के बारे में कुछ नहीं पता है।
ddकच्चे विभाजन में लिखने के लिए उपयोग नहीं कर सकते । आप केवल फाइलों पर लिख सकते हैं। आप निश्चित रूप से एक ब्लॉक डिवाइस फाइल को लिख सकते हैं जो एक विभाजन (जैसे ) का प्रतिनिधित्व करती है /dev/sda1, लेकिन आप एक कच्चे विभाजन को नहीं लिख सकते। और चूँकि आप केवल एक फाइल को लिख सकते हैं जो विभाजन का प्रतिनिधित्व करती है, आप विभाजन के अंत को नहीं लिख सकते हैं, क्योंकि फाइल केवल विभाजन का प्रतिनिधित्व करती है, और विभाजन का नहीं और अंत से थोड़ा अतीत।
/dev/sdaअपने टेक्स्ट एडिटर में खोल सकते हैं और डेटा को बदल ddसकते हैं, विभाजन तक पहुंचने में सक्षम होने के मामले में किसी भी अन्य कार्यक्रम से अलग नहीं है। बहुत अच्छा जवाब!
एक खतरनाक, लेकिन दुर्लभ विशेष परिदृश्य है जिसमें यह गैर-छोटी गाड़ी ब्लॉक डिवाइस ड्राइवरों के साथ भी हो सकता है:
आपको dd से सावधान रहना होगा जैसे कि यदि आप कोई गलती करते हैं तो आप उससे अधिक सौदेबाजी कर सकते हैं जिसके लिए आप सौदेबाजी कर रहे हैं और यह इस बात पर निर्भर करता है कि आप dd के लिए क्या उपयोग कर रहे हैं (dd के उपयोग में ओपी अस्पष्ट था और dd का सटीक सिंटैक्स। आदेश)।
यदि आप एक विभाजन निर्दिष्ट करते हैं तो यह उस विभाजन को लिख देगा जब तक कि विभाजन पूरा नहीं हो जाता।
यदि आप कोई गलती करते हैं और पूरी ड्राइव डालते हैं, तो उदाहरण के लिए = / dev / sda, dd पूरे ड्राइव को लिखना शुरू कर देगा ताकि आपकी विभाजन तालिका की अनदेखी (और ओवरराइटिंग) हो।
आप हमें डिलीट की गई फाइलों को ओवरराइट करने के लिए एक पार्टीशन पर dd भी कर सकते हैं (डिलीट की गई फाइल्स विभाजन पर बनी रह सकती हैं और विभिन्न रिकवरी टूल्स द्वारा सफलता की विभिन्न डिग्री के साथ खोज की जाती हैं, जब तक कि वे लिखित न हों। इस मामले में आप फ्री स्पेस भरने के लिए dd का उपयोग कर सकते हैं। एक फ़ाइल के लिए लेखन।
dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file
आप जो भी कर रहे हैं, उसके आधार पर, आप फ़ाइलों को सुरक्षित रूप से हटाने के लिए एक वैकल्पिक उपकरण का उपयोग करना चाह सकते हैं। देखें कि कैसे सुरक्षित तरीके से फ़ाइल को हटाएं? विकल्पों के लिए।
ddवह निम्न स्तर नहीं है। वास्तव में लोगों द्वारा उपयोग की जाने वाली अधिकांश चीजें ddबस उसी के साथ की जा सकती थीं cat। वास्तव में catयह थोड़ा तेज है क्योंकि यह ddडिफ़ॉल्ट रूप से बड़े ब्लॉक का उपयोग करता है। सभी निम्न स्तर का कोड कर्नेल में है। और ड्राइवर वास्तव में परवाह नहीं करता है यदि आप उपयोग कर रहे हैं ddया cat।
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यह विभाजन से आगे नहीं जाएगा। Dd के साथ आप क्या करना चाहते हैं, इस पर निर्भर करता है।
of=somepartition, इसलिए ऐसा मामला जहां आप पूरी डिस्क डिवाइस पर लिखते हैं वह लागू नहीं होता है। ddडिवाइस ड्राइवर के प्रतिबंधों के आसपास नहीं जा सकते।
/dev/sda1, कर्नेल द्वारा इस तरह से बनाए गए हैं कि उनके माध्यम से आसन्न भंडारण तक पहुंचना असंभव है (यह मानते हुए कि पिछली बार पढ़ने के बाद विभाजन तालिका को बदल नहीं दिया गया था)। यदि आप उस तरह से आसन्न भंडारण तक पहुंच सकते हैं, तो इसे एक विशाल बग माना जाएगा।