Dd कमांड वास्तव में क्या करता है?


8

कुछ दिनों पहले मुझे यह जानकर खुशी हुई थी कि यह स्पष्ट रूप से ऐसा करने के लिए डिज़ाइन किए गए किसी तीसरे पक्ष के कार्यक्रम की मदद के बिना एक यूएसबी के लिए एक आईएसओ छवि को लिखना मुश्किल नहीं है। लेकिन कमांड (या प्रोग्राम) जो इस की सुविधा देता है - dd - पहेलियाँ मुझे।

विकिपीडिया के अनुसार इसे कच्चे डेटा को कॉपी और परिवर्तित करने के लिए डिज़ाइन किया गया है, लेकिन ईमानदारी से मुझे यह परिभाषा बहुत समान और अस्पष्ट लगती है। मैं समझता हूं कि यह आपको डेटा के एक टुकड़े को दूसरे में बदलने की सुविधा देता है, लेकिन अगर निर्दिष्ट आउटपुट फ़ाइल को निर्दिष्ट इनपुट फ़ाइल में बदल दिया जाए तो क्या होगा?

dd if=giant_file of=tiny_file

इसके अलावा, जब मैं एक छवि फ़ाइल के साथ बूट करने योग्य USB बनाता हूं, तो USB एक फाइलसिस्टम प्रकार प्राप्त करता है isofs , लेकिन अगर मैं ड्राइव के लिए एक संग्रह या निष्पादन योग्य लिखता हूं, तो यह अपने नियमित फाइल सिस्टम प्रकार को बरकरार रखता है।

Dd कमांड वास्तव में क्या करता है या निचले स्तर पर कैसे काम करता है, इसकी कोई भी स्पष्टीकरण बहुत सराहना की जाएगी। धन्यवाद!

जवाबों:


8

dd एक बाइट-बाय-बाइट स्रोत से गंतव्य तक कॉपी करता है, जिसके द्वारा निर्दिष्ट वैकल्पिक रूपांतरण के साथ conv तर्क। यह पढ़ता है और द्वारा निर्दिष्ट के रूप में लिखता है *bs तथा *flag विकल्प, सीमा द्वारा परिभाषित के साथ count, skip, तथा seek विकल्प।

यदि निर्दिष्ट आउटपुट फ़ाइल निर्दिष्ट इनपुट फ़ाइल में बदल जाए तो क्या होगा?

अगर of शामिल करने के लिए बहुत छोटा है if फिर डेटा को फिट करने के लिए छोटा किया जाता है। ध्यान दें कि यदि of एक नियमित फ़ाइल है तो इसे ओवरराइट कर दिया जाता है।


1
of ओवरराइट हो जाता है, भले ही यह एक फ़ाइल नहीं है - यह एक बहुत अच्छा तरीका है (गलती से?) एक विभाजन / ड्राइव को नष्ट कर! इसलिए यह डबल और बहुत महत्वपूर्ण है कि अगर यह सही है तो यह सुनिश्चित करने के लिए कि यह एक ड्राइव / पार्टीशन है, गंतव्य को ट्रिपल चेक करें।
Bob

1
तकनीकी रूप से यह लिखता है में ऑब्जेक्ट को अधिलेखित करने के बजाय।
Ignacio Vazquez-Abrams

जवाब के लिए धन्यवाद। क्या होगा यदि आप कोई तर्क शामिल नहीं करते हैं, लेकिन कुछ ऐसा करें dd if=executable of=archive.tarयह मानते हुए कि वे दोनों एक ही आकार के हैं। क्या पुरालेख निष्पादन में त्रुटिपूर्ण रूप से परिवर्तित हो जाएगा?
ICoffeeConsumer

1
यह एक बाइट के लिए बाइट कॉपी करेगा executable सेवा मेरे archive.tar एक बार में 512 बाइट्स। यह बाइनरी को एक संग्रह में नहीं बदलेगा।
Ignacio Vazquez-Abrams

4

मैं इन लिंक में जो भी है उसे संक्षेप में बताने की कोशिश नहीं करूंगा, लेकिन आप उन्हें उपयोगी (या) पा सकते हैं बहुत-बहुत जानकारी ) ... वे दोनों से हैं यूनिक्स और amp; लिनक्स (Stackexchange)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.