इन दोनों dd कमांड में क्या अंतर है?


23

क्या दोनों के बीच अंतर है ddआज्ञाओं है कि अलग अलग bsऔर countमूल्यों, जब तक कि वे गुणा करने के लिए एक ही? उदाहरण के लिए:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1

4
दोनों आज्ञाओं को युग लगेगा। यदि आपको यादृच्छिक संख्याओं की आवश्यकता है, तो उर्जैंड का उपयोग करें । यदि आपको किसी चीज़ के तेज़ इनपुट की आवश्यकता है तो शून्य का उपयोग करें ।
निल्स

4
का उपयोग करें /dev/urandom, नहीं /dev/random। देखें सुरक्षा
.stackexchange.com/questions/3936

जवाबों:


26

जहां तक ​​अंतिम परिणाम का सवाल है, वे ऐसा ही करेंगे। अंतर यह है कि ddडेटा को कैसे संसाधित किया जाएगा। और वास्तव में, आपके दोनों उदाहरण उस संबंध में काफी चरम हैं: bsपैरामीटर बताता है ddकि इसे आउटपुट करने से पहले मेमोरी में कितना डेटा बफर होना चाहिए।

तो, अनिवार्य रूप से, पहली कमांड 1GB के दो टुकड़ों में 2GB पढ़ने की कोशिश करेगी , और बाद में एक बार में पूरे 2GB को पढ़ने की कोशिश करेगी और फिर इसे aaफ़ाइल में आउटपुट करेगी ।


17

परिणाम वही होगा लेकिन पहले मामले में ddदो 1GB ब्लॉक लिखेंगे जबकि दूसरे 2GB ब्लॉक में। अंतर यह है कि ddकॉपी किए गए ब्लॉक को मेमोरी में रखता है। आपको पहले मामले में 1GB RAM और दूसरे में 2GB की आवश्यकता होगी।

मेरी राय में इतने बड़े ब्लॉक का इस्तेमाल करने की कोई जरूरत नहीं है। आप कुछ परीक्षण कर सकते हैं लेकिन मेरे मामले में मैं बहुत छोटे ब्लॉकों (<1MB) के साथ अधिक गति प्राप्त करता हूं


9

पहले वाला 1G मेमोरी लेगा, इसे इनपुट फाइल के डेटा से भरेगा और इसे दो बार आउटपुट करेगा।

दूसरा वाला 2G मेमोरी लेगा, इसे इनपुट फाइल के डेटा से भरेगा और आउटपुट देगा।


2

उपयोग किए गए ब्लॉक-आकार को स्रोत और लक्ष्य डिवाइस के लिए सर्वोत्तम गति सेटिंग्स से मेल खाना चाहिए।

यदि आप LV डिवाइस को कॉपी करने का प्रयास करते हैं तो आप अंतर देख सकते हैं। बहुत छोटे बीएस-आकार का उपयोग अनावश्यक रूप से पठन-प्रक्रिया को बाधित करेगा। एक बहुत बड़े बीएस-आकार के उपयोग से लेखन के दौरान लंबे समय तक प्रतीक्षा होगी।

चूँकि मानक LVs में सामान्य रूप से 4 MB विखंडू होते हैं, इसलिए इनके लिए भौतिक डिस्क अभिगम I bs = 4M का भी अच्छा आकार है।

16K या 256M के साथ प्रयोग करने की कोशिश करें - आप अंतर को नोट करेंगे - और कॉपी के दौरान डिस्क संकेतक देखें ...


छोटे या बड़े ब्लॉक आकार के लिए दंड कर्नेल द्वारा निष्पादित कैशिंग द्वारा कुछ हद तक ऑफसेट होता है। मिनी-बेंचमार्क के लिए यहां देखें ।
गिल्स का SO-

@ गिल्स I को मेरे परीक्षणों में संख्या याद नहीं है, लेकिन वे आपकी तुलना में कहीं अधिक नाटकीय थे। आपने अपने परीक्षण में किस भौतिक हार्डडिस्क-सेटअप का उपयोग किया? मेरा एक हार्डवेयर था RAID 128 केबी के साथ 5 डिस्क (एसएएस 15k) में धारीदार 5। धारी का आकार।
निल्स

SATA डिस्क, नहीं RAID, अन्यथा निष्क्रिय मशीन। मुझे सटीक चश्मा याद नहीं है।
गाइल्स का SO- बुराई होना बंद करो '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.