पूरे आउटपुट डिवाइस को मिटा दिया जाता है, चाहे उसका आकार आपके द्वारा पास किए जाने वाले ब्लॉक आकार का एक बहु हो dd
या नहीं।
notrunc
जब उत्पादन एक युक्ति फ़ाइल है, क्योंकि एक युक्ति फ़ाइल छोटा कोई प्रभाव नहीं है झंडा कोई प्रभाव नहीं है। यदि आउटपुट एक नियमित फ़ाइल थी, तो इसका प्रभाव यह होगा कि लिखने से पहले आउटपुट फ़ाइल को छोटा नहीं किया जाता है, जो कुछ फाइल सिस्टम पर होता है, जिसका अर्थ है कि पुराना डेटा ओवरराइट किया गया है (जैसा कि डेटा के नए ब्लॉक लिखने और बाकी अनासक्त छोड़ने पर, हालाँकि यह उपयोगी नहीं होगा क्योंकि यह संपत्ति सभी फाइल सिस्टम द्वारा गारंटी नहीं है और इसके अलावा कमांड न केवल फ़ाइल को अधिलेखित करेगा, बल्कि यह तब तक लिखता रहेगा जब तक कि यह आउटपुट डिस्क (या कुछ और त्रुटि) न हो।
उपयोग करने dd
और इस बारे में चिंता करने के बजाय कि क्या आप इसे सही तरीके से उपयोग कर रहे हैं (जैसा कि ऐसा होता है, यह इस विशेष मामले में काम करता है, लेकिन यह जटिल है और कभी-कभी काम नहीं करता है ), बस उपयोग करेंcat
।
cat /dev/zero >/dev/sdX
वेब पर लोकप्रिय विश्वास के बावजूद, इसमें कोई जादू नहीं है, dd
जो इसे किसी भी तरह डिस्क पर लिखने के लिए बेहतर बनाता है। मैजिक /dev
फाइलों में है। कोई भी उपकरण जो बाइनरी डेटा के साथ सामना कर सकता है, जैसे कि कोई भी आधुनिक cat
या head
, वही काम कर सकता है dd
जब तक आप झंडे को पास नहीं कर रहे हैं जैसे कि seek
या skip
।
ध्यान दें कि एक समस्या ने साझा किया है dd
और cat
यह है कि सफल संचालन पर, वे "डिवाइस पर कोई जगह नहीं छोड़ते" (ENOSPC) के साथ त्रुटि करेंगे। यदि आप इसे एक स्क्रिप्ट में रखते हैं, तो आपको या तो यह जांचना होगा कि त्रुटि ENOSPC है या किसी अन्य विधि का उपयोग करें। एक अधिक विश्वसनीय विधि पहले डिवाइस के आकार (जैसे /proc/partitions
लिनक्स के तहत उपयोग करना ) का निर्धारण करना है , फिर उपकरण जैसे कि बाइट्स की सही संख्या लिखें head
।
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX