dd: कई डिस्क पर लिखें?


16

मेरे पास 2 बिल्कुल समान स्वरूपित, समान आकार और समान ब्रांड SD- कार्ड हैं। मैं एक ही समय में और इसके लिए ddछवि बनाना चाहूंगा । स्यूडोकोड/dev/disk2/dev/disk3

sudo dd bs=1m if=/Users/masi/2016-05-10-raspbian-jessie.img of={/dev/disk2,/dev/disk3}

आप ddएक इनपुट से कई आउटपुट एसडी तक कैसे कर सकते हैं ?


यहाँ क्या लक्ष्य है? प्रदर्शन? यदि हाँ, तो याद रखें कि आपके द्वारा पढ़ा गया डेटा कैश किया जाएगा। तो दूसरा dd आपको पढ़ने के बजाय आपके bcache से डेटा देगा (बेशक आपको कुछ मुफ्त रैम की आवश्यकता है)।
KWubbufetowicz

2
GNU कोरुटिल्स dd के साथ मेरे सरलीकृत परीक्षण ... of=one of=twoने दो आउटपुट का उत्पादन नहीं किया। दो ddआज्ञाओं की आवश्यकता हो सकती है । मैं कई के लिए अनुमति देने के लिए डॉक्स के लिए पॉज़िक्स में शब्दांकन नहीं देखता of
जेफ स्कालर

@KWubbufetowicz मेरे पास 8GB रैम है। 32GB प्राप्त करना संभव है। स्पीड मेरा लक्ष्य है क्योंकि मेरे पास 5 एसडी हैं।
लेओ लेपोल्ड हर्ट्ज़ '

जवाबों:


20
  1. Don_crissti के उत्तर का उपयोग करके उधार लेना tee, लेकिन बिना ddया बैश के :

    sudo tee /dev/disk2 /dev/disk3 > /dev/disk4 < masi.img
    
  2. peeडेबियन के moreutils पैकेज का उपयोग :

    sudo dd if=masi.img | \
      pee "dd of=/dev/disk2"  "dd of=/dev/disk3"  "dd of=/dev/disk4"
    

    के साथ bash, kshया zsh, कि संक्षिप्त किया जा सकता है:

    sudo dd if=masi.img | pee "dd of=/dev/disk"{2..4}
    

    या यहां तक ​​कि, (अगर वहाँ ddउपयोगी कार्यों के लिए कोई ज़रूरत नहीं है ):

    sudo pee "dd of=/dev/disk"{2..4} < masi.img
    

    peeउपयोगी है; यदि आवश्यक हो तो ddप्रत्येक आउटपुट डिवाइस के लिए व्यक्तिगत रूप से सिलवाया गया (प्रत्येक उद्धृत तर्क के भीतर), अतिरिक्त अलग विकल्प, और यहां तक ​​कि अन्य पाइप और फिल्टर भी शामिल हो सकते हैं ।

या तो विधि के साथ आउटपुट डिस्क की संख्या अनिश्चित काल तक बढ़ाई जा सकती है।


1
इसके लिए dd का उपयोग करना आवश्यक नहीं है। बहुत से लोग मानते हैं कि यह आवश्यक है क्योंकि इसका उपयोग, डिस्क छवियों से कॉपी करने के लिए विशिष्ट है, 90 के दशक में वापस लिखे गए ट्यूटोरियल में "जीवाश्म" है और उन लोगों द्वारा कॉपी किया गया है जो नहीं जानते थे कि क्यों। यह वापस cp में एक गड़बड़ के आसपास काम करने के लिए इस्तेमाल किया गया था।
रैंडम 832

@ Random832 यह आवश्यक है क्योंकि यह की तुलना में अधिक स्थिर है cp। कई स्वरूपों और विभिन्न आवंटन आकारों का प्रयास करें। मुझे cpकाम के लिए पर्याप्त स्थिर नहीं मिला है । कृपया, मुझे यहाँ एक उत्तर के रूप में सही करें यदि आप बहस कर सकते हैं कि कैसे cpपर्याप्त स्थिर है।
लेओ लेपोल्ड हर्ट्ज '20

@ मासी एक डिस्क में डिस्क छवि लिखने या डिस्क पढ़ने के सामान्य उद्देश्य के लिए एक प्रारूप (आप "प्रारूप" से भी क्या मतलब है) और आवंटन आकार (आप ब्लॉक आकार का मतलब है?) का चयन करने के लिए शायद ही कभी आवश्यक है। एक डिस्क छवि। इस उद्देश्य के लिए आमतौर पर उपयोग किए जाने वाले dd का उपयोग 90 के दशक की शुरुआत में cp (Linux में विशेष रूप से लिनक्स पर GNU cp) के कारण हुआ था, जिसके कारण यह उन सभी ब्लॉक को शून्य-बाइट्स को कॉपी करना छोड़ दिया था।
रैंडम 832

7
cp90 के दशक में बग ? ddउससे 20 साल बड़ा है। का उपयोग कर के लिए मुख्य कारण ddहै कि कई उपकरणों, विशेष रूप से टेप ड्राइव, पढ़ा जा करने के लिए आवश्यक / तय ब्लॉक आकार में लिखा था, जिसके कारण, ddहै bs, ibsऔर obs, मानकों और यह केवल प्रोग्राम है जो सही ब्लॉक आकार सुनिश्चित कर सकता था।
गुंट्रम ब्लोहम

1
@ गिल्स, यहाँ टी वास्तव में पेशाब करने के लिए बेहतर है , (लेकिन dcfldd सबसे अच्छा है)। फिर भी, पेशाब उपयोगी है; यदि आवश्यक हो, एक, (प्रत्येक उद्धृत तर्क के भीतर), अतिरिक्त 'dd' विकल्प, और यहां तक ​​कि अन्य पाइप और फिल्टर, व्यक्तिगत रूप से प्रत्येक आउटपुट डिवाइस के अनुरूप हो सकते हैं।
एजीसी

21

आप कोशिश कर सकते हैं कि यह एक बढ़ाया संस्करण है और यह एक ही समय में कई फ़ाइलों या डिस्क के लिए आउटपुट कर सकता है:dcfldd
gnu dd

dcfldd if=masi.img of=/dev/disk2 of=/dev/disk3 of=/dev/disk4

क्या आप अपना पहला आदेश समझा सकते हैं। केवल आखिरी से पहले ही पाइप क्यों dd? चार के साथ पाइप का स्थान कैसे बदलता है dd?
लेओ लेपोल्ड हर्ट्ज़ 16

3
dcflddसबसे तेज़ है, शायद यह पहली पसंद होनी चाहिए।
अगस्त २०'१६

मैंने पाया कि यह अन्य पाइपिंग विधियों की तुलना में काफी तेज है।
शुक्र

3

इसके साथ ही यह संभव है teeऔर process substitution:

dd if=/dev/sda | tee >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd


क्या आप विकल्प की व्याख्या कर सकते हैं? आपका उत्तर agc के एक से कैसे भिन्न है?
लेओ लेपोल्ड हर्ट्ज़ '

हाँ सुनिश्चित करें: process substitutionका उपयोग तब किया जाता है जब आपको एक कमांड के स्टेपआउट को कई कमांड पर पाइप करने की आवश्यकता होती है। एक साधारण पाइप का उपयोग करने से आप केवल एक कमांड को पाइप कर सकते हैं। मेरा जवाब agc के रूप में एक ही परिणाम प्राप्त कर रहा है, लेकिन एक अलग तरीके से :) इसके अलावा, मैंने peeपहले कभी इस्तेमाल नहीं किया , क्योंकि मेरे पास teeमेरे सिस्टम पर कमांड है।
chewallier
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.