सिंगल डिस्क ड्राइव को एक साथ कई ड्राइव में क्लोन करना


12

मैं एक ही समय में एक से अधिक डिस्क ड्राइव पर सिंगल डिस्क ड्राइव को क्लोन करने का तरीका ढूंढ रहा हूं।

मैंने 1TB डिस्क पर सिस्टम चित्र तैयार किए हैं, और एक डिस्क को दूसरे पर क्लोन करने में लगभग 2 घंटे लगते हैं, और फिर 30 डिस्क क्लोन बनाने के लिए यह तेजी से ऊपर जाता है।

यदि एकल डिस्क को एक से अधिक लक्ष्य के लिए क्लोन करना संभव था, तो यह पूरी प्रक्रिया को बहुत सरल कर देगा।

इसके अलावा, क्या ऐसा कुछ है जो इस तरह के ऑपरेशन को रोकता है? मेरा मतलब है, क्या कोई विशेष कारण है कि हर डिस्क क्लोनिंग सॉफ़्टवेयर जिसके बारे में मुझे पता है वह केवल एकल लक्ष्य ड्राइव का समर्थन करता है?

धन्यवाद!

जवाबों:


17

आप इसे करने के लिए टी कमांड के साथ बैश के "प्रक्रिया प्रतिस्थापन" का उपयोग कर सकते हैं:

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इसलिए की तरह प्रत्येक मशीन पर प्रक्रियाओं:

  1. स्रोत मशीन cat/ pv/ ddके माध्यम से डाटा s ncगंतव्य मशीन 1 करने के लिए।
  2. डेस्टिनेशन मशीन 1 में ncसोर्स मशीन के डेटा के बारे में सुना गया है और इसे पाइप करके teeजिसके माध्यम से इसे dd(और इसलिए डिस्क को) ncभेजा जा रहा है और एक अन्य प्रक्रिया जो गंतव्य मशीन 2 को भेजती है।
  3. डेस्टिनेशन मशीन 2 में डेस्टिनेशन मशीन 1 ncके डेटा को सुना जाता है और इसे पाइप करके teeजिसके माध्यम से इसे dd(और इसलिए डिस्क को) ncभेजा जा रहा है और एक अन्य प्रक्रिया जो डेस्टिनेशन मशीन 3 को भेजती है।
  4. और इसलिए आखिरी मशीन तक जो सिर्फ ncपिछली मशीन से डेटा उठाती है और डिस्क के माध्यम से भेजती है dd

इस तरह से आप संभावित रूप से अपने पूर्ण नेटवर्क बैंडविड्थ का उपयोग कर रहे हैं यह मानते हुए कि आपने अपना स्विच और नेटवर्क कार्ड सभी पूर्ण-द्वैध लिंक से बातचीत की है। स्रोत मशीन के बजाय डेटा की 10 प्रतियां बाहर भेजना (10 गंतव्य मशीन मान लेना) इसलिए प्रत्येक आउटगोइंग बैंडविड्थ के 1/10 वें तक सीमित है, यह केवल 1 भेज रहा है। प्रत्येक गंतव्य मशीन डेटा की एक प्रति ले रही है और इसे बाहर भेज रही है फिर। आप के बफर आकार सेटिंग ट्वीक करना पड़ सकता है pv, ncऔर ddसबसे अच्छा व्यावहारिक प्रदर्शन के साथ नज़दीकी बढ़ाने।

यदि आप कुछ सॉफ़्टवेयर पा सकते हैं जो कि अभी मल्टीकास्ट का समर्थन करता है, तो यह बहुत आसान होगा (और शायद थोड़ा तेज़ होगा)! लेकिन ऊपर हैकी समाधान की तरह मैं कोशिश करने के लिए पर्याप्त बेईमान हो सकता है ...

फिर से संपादित करें

एक और विचार। यदि ड्राइव की छवि अच्छी तरह से संपीड़ित होती है (जो कि अगर यह बड़ी मात्रा में जीरो से भरी है) तो स्रोत मशीन के आउटगोइंग बैंडविड्थ को एक बार में कई गंतव्यों को भेजने पर भी कोई समस्या नहीं होनी चाहिए। बस छवि को पहले संपीड़ित करें , गंतव्य तक (और नेटवर्क-> -> डीकंप्रेसर-> -> डिस्क) पर tee+ ncऔर का उपयोग करके हर जगह संचारित करें ।ncdd


प्रक्रिया की गहन व्याख्या के लिए धन्यवाद। यह वास्तव में मददगार था। मैं अभी नेटवर्क क्लोनिंग विकल्प तलाश रहा हूं (मल्टीकास्ट का उपयोग करके), और यदि यह विफल रहता है, तो मैं इस डीडी वेक्टर का कुछ और पता लगाऊंगा।
mr.b

आपने यह नहीं कहा कि ड्राइव अलग-अलग कंप्यूटरों से जुड़े थे ... जो चीजों को पूरी तरह से अलग बनाता है!
marcusw

यह कंप्यूटर के स्थानीय कंप्यूटर और नेटवर्क दोनों के सबसे करीब आता है, एक साथ कई डिस्क दोहराव। गहराई से स्पष्टीकरण के लिए धन्यवाद!
mr.b

नेटवर्क क्लोनिंग विकल्पों के लिए जो लिनक्स आधारित हैं, आप क्लोनज़िला पर विचार करना चाह सकते हैं। यह मल्टिकास्ट के माध्यम से और साथ ही डीडी सहित कई स्थानीय क्लोनिंग विकल्पों के माध्यम से क्लोन कर सकता है।
user35060

5

Google पर पहला उत्तर सुझाया गया (एक लिनक्स सिस्टम पर):, dd if=/dev/sdb of=- | tee >(dd of=/dev/sdc) >(dd of=/dev/sdd) >(dd of=/dev/sde)जहां / dev / sdb वह हार्ड ड्राइव है जिसे आप क्लोन करना चाहते हैं और / dev / sdc, / dev / sdb, और / dev / sde को क्लोन करने के लिए ड्राइव (आप कर सकते हैं) जितने चाहें उतने जोड़ लें, बस कॉपीपेस्ट)। एक LiveCD को इसे करना चाहिए, और अपने ड्राइव अक्षरों से सावधान रहना याद रखना चाहिए!


1
सच। मैंने इस प्रश्न को पूछने से पहले कुछ शोध किया था, लेकिन मुझे अन्य लोगों के अनुभवों को सुनने में दिलचस्पी थी। डीडी एक बहुत छोटी उपयोगिता है, लेकिन: 1) इसमें वास्तविक डेटा सामग्री के बारे में जागरूकता का अभाव है (यह खाली स्थान, भी, सेक्टर-बाय-सेक्टर की नकल करेगा), और 2) किसी ने एक से अधिक ड्राइव के लिए क्लोन करते समय प्रदर्शन के मुद्दों की सूचना दी है। इस तरह। कोई और विचार?
mr.b

"[...] जहां / dev / sdb वह हार्ड ड्राइव है जिसे आप क्लोन करना चाहते हैं और / dev / sdc, / dev / sdb, और / dev / sde को क्लोन करने के लिए ड्राइव करते हैं [...]" ---> "[...] और अपने ड्राइव अक्षर से सावधान रहना याद रखें!" : DI सहमत !!!
dag729

1
@ mr.b: 1) मेरे दिमाग में, संभावित खतरनाक शॉर्टकट लेने की तुलना में बिट-फॉर-बिट कॉपी बेहतर है। 2) मेह, सबसे अच्छा तरीका जो मैं सोच सकता हूं कि यह एक साथ एक से अधिक स्थानों पर कॉपी करने के लिए dd के स्रोत के साथ खिलवाड़ करना है, लेकिन यह सिर्फ धीमी गति से नकल करने के लिए तेज होगा।
सुबह

क्या आप इसके बारे में निश्चित हैं of=-? सिर्फ -मेरे लिए stdout करने के लिए outputting के बजाय एक आउटपुट फ़ाइल बनाता है । यह केवल ofविकल्प छोड़ने से हल किया जा सकता है।
therefromhere

इस तरह से "टी" का उपयोग करने से काम नहीं चलेगा। कृपया देखें: joshhead.wordpress.com/2011/08/04/…
user35060

2

मुझे केवल इतना पता है कि हार्ड ड्राइव डुप्लिकेटर्स नामक कुछ चीजें हैं। ये एक ही समय में कई ड्राइव में एचडी (डुप्लिकेट) एचडी को क्लोन करने के लिए विशेष उपकरण हैं। शायद यह लेख आपकी मदद करे।


हाँ, मैं इन उपकरणों के अस्तित्व से अवगत हूँ; हालाँकि, वे मेरे शून्य-बजट के मामले में विशेष रूप से सब कुछ सस्ते हैं, लेकिन उनका उल्लेख करने के लिए धन्यवाद, हालांकि।
mr.b

1
जबकि पूरी तरह से शून्य-लागत नहीं है, अगर आपके पास एक अतिरिक्त मशीन (एक सभ्य बिजली की आपूर्ति के साथ) है जिसे आप कमांड कर सकते हैं और सस्ते SATA नियंत्रकों की एक जोड़ी खरीद सकते हैं (मेरे घर की मशीन में एक दो-पोर्ट एक है जो एक टेनर की लागत है) आप अपनी खुद की सरल डुप्लीकेशन मशीन बना सकते हैं और dd + tee मेथड या अन्य सॉफ्टवेयर का उपयोग कर सकते हैं यदि आप कुछ ऐसा ढूंढ सकते हैं जो "एकल स्रोत से पढ़े, बहुत से" कुशलता से लिखें।
डेविड स्पिललेट

(यह वही है जो मैंने माना था कि आप मेरे प्रारंभिक उत्तर में करने की कोशिश कर रहे हैं।)
डेविड स्पिललेट

1

चूंकि किसी ने अभी तक इसका उल्लेख नहीं किया है, मैं Clonezilla और उनके सर्वर संस्करण का उल्लेख करूंगा । (दुर्भाग्य से, इसका कोई सीधा लिंक नहीं दिखता है, लेकिन आप साइट के बाएं मेनू में "सर्वर संस्करण" पा सकते हैं ...)

मैं Clonezilla लाइव संस्करण के साथ बहुत अच्छी किस्मत है, लेकिन अभी तक सर्वर संस्करण की कोशिश की है। हालांकि बहुत चालाक लग रहा है।


मैं आपके द्वारा प्रदान की गई प्रतिक्रिया के आधार पर आपके लिए एक अच्छा समाधान होने के रूप में दूसरा क्लोनज़िला देखूंगा।
user35060

1

यदि आप Mac OS X का उपयोग कर रहे हैं तो यह अंदर से बनाया गया है। मशीन से आपकी छवि मल्टीकास्ट एसआर सत्र शुरू करने के लिए जा रही है। क्लाइंट से बूट डिस्क पर, टर्मिनल खोलें, और एसआरएस मल्टीकास्ट स्ट्रीम से कनेक्ट करें। नि: शुल्क।

विवरण: http://www.bombich.com/mactips/multicast.html


1

मुझे इस से संबंधित वेब पर 2 उपयोगी लिंक मिले। डिस्क का उपयोग करने के लिए बिल्ली के बिना एक dd का उपयोग किया जाता है:

dd if=/dev/sdb | tee >(dd of=/dev/sdc) | tee >(dd of=/dev/sdj) | dd of=/dev/sdh

http://joshhead.wordpress.com/2011/08/04/multiple-output-files-with-dd-utility

प्रगति मीटर दिखाने के लिए इसे अन्य लिंक के साथ आगे बढ़ाया गया है:

dd if=/dev/sdb | pv -s $(blockdev --getsize64 /dev/sdb) | tee >(dd of=/dev/sdc) | tee >(dd of=/dev/sdj) | dd of=/dev/sdh

http://www.commandlinefu.com/commands/view/6177/dd-with-progress-bar-and-statistics


0

मैं डेविड के जवाब पर विस्तार करना चाहता था

pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd

drive.imageवास्तव में एक और डिवाइस, जैसे हो सकता है/dev/sde

दूसरा, ddकमांड एक उचित bsसेटिंग के साथ तेजी से काम करेगा । मैंने bs=64k1 घंटा से 10 मिनट तक, 40 गिग विभाजन की नकल के लिए 6 गुना गति की वृद्धि का इस्तेमाल किया और देखा।

तो अंतिम आदेश इस तरह दिखेगा:

pv drive.image | tee >(dd bs=64k of=/dev/sda) >(dd bs=64k of=/dev/sdb) >(dd bs=64k of=/dev/sdc) | dd bs=64k of=/dev/sdd

यदि आपका स्रोत फ़ाइल के बजाय एक ड्राइव है, तो यह इस तरह दिखेगा:

pv /dev/sde | tee >(dd bs=64k of=/dev/sda) >(dd bs=64k of=/dev/sdb) >(dd bs=64k of=/dev/sdc) | dd bs=64k of=/dev/sdd


0

समानांतर हार्ड डिस्क दोहराव कंप्यूटर फोरेंसिक में एक सामान्य कार्य है। dc3dd( मैन पेज ) एक समर्पित उपकरण है जो एकल स्रोत की समानांतर प्रतिलिपि कई गंतव्यों और UNIX की तरह काम करता है dd, जिसमें कई of=विकल्प की अनुमति है।

स्रोत मात्रा के हैशिंग और प्रतियों की अखंडता को सत्यापित करने के लिए सक्षम करना भी संभव है।

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