आप इसे करने के लिए टी कमांड के साथ बैश के "प्रक्रिया प्रतिस्थापन" का उपयोग कर सकते हैं:
cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd
या स्पष्टता के लिए (थोड़ी दक्षता की कीमत पर) आप अंतिम dd
को दूसरों की तरह ही कह सकते हैं और टी के स्टडआउट को / dev / null को भेज सकते हैं:
cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | /dev/null
और यदि आपने इसे स्थापित किया है तो आप एक उपयोगी प्रगति संकेतक प्राप्त करने के बजाय पाइप दर्शक का उपयोग कर सकते हैं cat
:
pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd
यह स्रोत छवि को केवल एक बार पढ़ता है, इसलिए स्रोत ड्राइव को हेड-थ्रशिंग का सामना करना पड़ता है, जो शायद इसलिए होगा कि जब आप छवि को कई बार अन्य तरीकों से कॉपी करने की कोशिश करते हैं तो आप घातीय धीमा-डाउन देखते हैं। tee
ऊपर की तरह उपयोग करते हुए , प्रक्रियाओं को धीमी गति से गंतव्य ड्राइव की गति से चलना चाहिए।
यदि आपके पास गंतव्य ड्राइव USB के माध्यम से जुड़े हुए हैं, तो ध्यान रखें कि वे सभी बस बैंडविड्थ साझा कर सकते हैं, इसलिए समानांतर में कई लिखना क्रमिक रूप से उन्हें लिखने की तुलना में तेज़ नहीं हो सकता है क्योंकि USB बस स्रोत या गंतव्य ड्राइव नहीं अड़चन बन जाती है।
उपरोक्त मान लें कि आप लिनक्स या समान का उपयोग कर रहे हैं (यह ओएसएक्स पर भी काम करना चाहिए, हालांकि डिवाइस के नाम अलग हो सकते हैं), यदि आप विंडोज या कुछ और का उपयोग कर रहे हैं, तो आपको एक अलग समाधान की आवश्यकता है।
संपादित करें
USB पर कई ड्राइव की इमेजिंग करने के लिए नेटवर्क पर इमेजिंग की समान समस्या है - परिवहन चैनल ड्राइव के बजाय अड़चन बन जाता है - जब तक कि आपके द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर प्रसारण या मल्टीकास्ट ट्रांसमिशन के कुछ रूप का समर्थन नहीं करते।
के लिए dd
विधि आप कर सकते थे शायद डेज़ी श्रृंखला netcat
+ tee
+ dd
इसलिए की तरह प्रत्येक मशीन पर प्रक्रियाओं:
- स्रोत मशीन
cat
/ pv
/ dd
के माध्यम से डाटा s nc
गंतव्य मशीन 1 करने के लिए।
- डेस्टिनेशन मशीन 1 में
nc
सोर्स मशीन के डेटा के बारे में सुना गया है और इसे पाइप करके tee
जिसके माध्यम से इसे dd
(और इसलिए डिस्क को) nc
भेजा जा रहा है और एक अन्य प्रक्रिया जो गंतव्य मशीन 2 को भेजती है।
- डेस्टिनेशन मशीन 2 में डेस्टिनेशन मशीन 1
nc
के डेटा को सुना जाता है और इसे पाइप करके tee
जिसके माध्यम से इसे dd
(और इसलिए डिस्क को) nc
भेजा जा रहा है और एक अन्य प्रक्रिया जो डेस्टिनेशन मशीन 3 को भेजती है।
- और इसलिए आखिरी मशीन तक जो सिर्फ
nc
पिछली मशीन से डेटा उठाती है और डिस्क के माध्यम से भेजती है dd
।
इस तरह से आप संभावित रूप से अपने पूर्ण नेटवर्क बैंडविड्थ का उपयोग कर रहे हैं यह मानते हुए कि आपने अपना स्विच और नेटवर्क कार्ड सभी पूर्ण-द्वैध लिंक से बातचीत की है। स्रोत मशीन के बजाय डेटा की 10 प्रतियां बाहर भेजना (10 गंतव्य मशीन मान लेना) इसलिए प्रत्येक आउटगोइंग बैंडविड्थ के 1/10 वें तक सीमित है, यह केवल 1 भेज रहा है। प्रत्येक गंतव्य मशीन डेटा की एक प्रति ले रही है और इसे बाहर भेज रही है फिर। आप के बफर आकार सेटिंग ट्वीक करना पड़ सकता है pv
, nc
और dd
सबसे अच्छा व्यावहारिक प्रदर्शन के साथ नज़दीकी बढ़ाने।
यदि आप कुछ सॉफ़्टवेयर पा सकते हैं जो कि अभी मल्टीकास्ट का समर्थन करता है, तो यह बहुत आसान होगा (और शायद थोड़ा तेज़ होगा)! लेकिन ऊपर हैकी समाधान की तरह मैं कोशिश करने के लिए पर्याप्त बेईमान हो सकता है ...
फिर से संपादित करें
एक और विचार। यदि ड्राइव की छवि अच्छी तरह से संपीड़ित होती है (जो कि अगर यह बड़ी मात्रा में जीरो से भरी है) तो स्रोत मशीन के आउटगोइंग बैंडविड्थ को एक बार में कई गंतव्यों को भेजने पर भी कोई समस्या नहीं होनी चाहिए। बस छवि को पहले संपीड़ित करें , गंतव्य तक (और नेटवर्क-> -> डीकंप्रेसर-> -> डिस्क) पर tee
+ nc
और का उपयोग करके हर जगह संचारित करें ।nc
dd