कैसे rsync का उपयोग करके एक नए हार्डडिस्क के लिए एक रनिंग सिस्टम को सर्वश्रेष्ठ क्लोन करें?


22

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

  • OS: उबंटू 12.04.4 LTS
  • नेतृत्वहीन
  • मैं बहुत नए सॉफ्टवेयर को स्थापित करने की उम्मीद नहीं कर रहा हूं क्योंकि डिस्क पहले से ही विफल है :)
  • सिस्टम चल रहा है। मुझे डर है कि इसे रोकने से डिस्क के वापस न आने की संभावना बढ़ जाती है। इसका मतलब है कि dd बाहर हो सकता है?
  • नई डिस्क एक ही आकार की नहीं है (यह दोगुनी बड़ी है) जितनी पुरानी dd समस्या को और जटिल करती है।

मेरा विचार था

  • सिस्टम में नई ड्राइव को हॉटप्लग करें
  • एक फाइल सिस्टम बनाओ
  • इसे / mnt / somedir में माउंट करें
  • फ़ाइलों को rsync करें
  • कुछ fstab जादू
  • कुछ बूटिंग जादू

मेरे पास अभी भी प्रश्न हैं:

एक अच्छा rsync कमांड क्या होगा? मैं योजना बना रहा था:

rsync -aAXx  / /mnt/somedir/ 
   --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

(मैं कुछ और डीआईआर छोड़ रहा हूं, जैसे मेरे घुड़सवार छापे आदि)

जहां विकल्प हैं:

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-A, --acls                  preserve ACLs (implies -p)
-X, --xattrs                preserve extended attributes
-x, --one-file-system       don't cross filesystem boundaries

मैं विशेष रूप से स्किप कर रहा हूँ -H, -v और --प्रोग्रेस प्रक्रिया को तेज करने के लिए।
क्या वह उबंटू के लिए काम करेगा? मुझे यकीन नहीं है कि अगर उबंटू किसी भी हार्डलिंक का उपयोग करता है, लेकिन मुझे नहीं लगता कि मुझे विकल्प की आवश्यकता है, क्या मुझे?

इस रन के बाद मैं रिबूट कर सकता हूं (शायद लाइव यूएसबी ड्राइव के साथ) और पुरानी डिस्क अभी भी शुरू होने पर rsync को फिर से चलाएं। यह किसी भी गैर-पठनीय / परिवर्तित फ़ाइलों को ठीक करेगा क्योंकि सिस्टम चल रहा था मुझे लगता है।


बूटिंग कैसे ठीक करें?
फिर मेरी योजना /मेरे fstab के लिए UUID को बदलने की होगी (अभी भी google को कैसे uuid को ढूंढना है), और कुछ जादू करना है ताकि सिस्टम वास्तव में नई डिस्क से बूट हो जाए

क्या मैं कुछ भूल गया हूं या मैंने कुछ विशेष रूप से बेवकूफ बनाने की योजना बनाई है?

जवाबों:


16

आप blkidकमांड के साथ सभी ब्लॉक डिवाइसों के लिए यूयूआईडी हड़प सकते हैं । (आप चाहते हैं कि सिर्फ यूयूआईडी कहे, न कि पार्टीयूइड)

मेरे द्वारा उपयोग किए जाने वाले rsync विकल्प -avhPHAXx हैं।

मुझे नहीं लगता कि -v या-progress तब तक कुछ भी गति देगा जब तक आप बहुत धीमे कंसोल / टैटी पर न हों।

उपयोग -x आपके सभी बहिष्करणों की आवश्यकता को समाप्त कर देता है, यह मानते हुए कि वे सभी अलग-अलग फाइल सिस्टम पर हैं (मेरे सिस्टम पर, खोए हुए + पाए गए को छोड़कर सभी)।

केवल बार-बार उपयोग किया जाने वाला प्रोग्राम जो मुझे पता है कि हार्ड लिंक (कम से कम मेरे सिस्टम पर) का उपयोग करता है git, इसलिए मैं -H विकल्प जोड़ता हूं। एकमात्र समस्या जो मुझे लगता है कि आपको उपयोग नहीं करने से -एच है कि यह थोड़ा अधिक स्थान लेगा।

बूटलोडर के रूप में, यदि आप एमबीआर के साथ GRUB2 का उपयोग कर रहे हैं, तो मैं जिस कमांड का उपयोग करता हूं वह grub-install /dev/sdaआपके लिए सही ड्राइव के साथ एसडीए को प्रतिस्थापित करता है। वह नई ड्राइव को बूट करने योग्य बनाना चाहिए। यदि आप एक अलग बूटलोडर या यूईएफआई का उपयोग कर रहे हैं, तो मैं नए ड्राइव को ठीक से बूट करने के तरीके के लिए Google की जांच करूंगा। बस याद रखें कि नई ड्राइव पर बूट उसी विभाजन पर होना चाहिए जैसा कि वर्तमान में है (यह मानते हुए कि आप / बूट के लिए भी UUID का उपयोग नहीं कर रहे हैं), अन्यथा आपको तदनुसार fstab को संशोधित करना होगा।


मुझे विश्वास नहीं है कि मैं उन्हें अलग-अलग प्रणालियों पर हूं जो मुझे डर लगता है, इसलिए बाहर करना विवेकपूर्ण लगता है। मैं - v की गति के बारे में मिश्रित सामग्री पढ़ रहा हूं, इसलिए मुझे यकीन नहीं है कि वहां क्या करना है;)। Git एक अच्छा बिंदु है, मुझे यकीन है / घर में कुछ है!
नन्ने

1
खैर, / proc, / sys और सबसे अधिक संभावना है / देव निश्चित रूप से / से अलग फाइल सिस्टम / माउंटप्वाइंट हैं, इसलिए आपके पास -x होने पर उन लोगों को बाहर करने का बिल्कुल कोई कारण नहीं है। यदि आप सुनिश्चित नहीं हैं कि आपके रूट फाइलसिस्टम का हिस्सा क्या है या नहीं, तो बस mountजांचें। जो कुछ भी वहाँ है उसे मैन्युअल रूप से बाहर करने की आवश्यकता नहीं होगी।
bparker

मुझे यकीन नहीं है कि कैसे और क्यों, लेकिन बाहर किए गए वैसे भी गलत थे। वे वास्तव में ड्राई-रन में थे, मुझे यकीन नहीं था कि क्यों। (ठीक है, मैंने प्रारूप को अर्ध-यादृच्छिक स्थान से कॉपी किया है, इसलिए इसका कारण हो सकता है?)। वैसे भी, आपकी सलाह के अनुसार -x दृढ़ता के साथ, मैंने बहुत अधिक चिंता नहीं की, केवल अतिरिक्त बात यह थी कि कुछ महत्वहीन सामान (उदाहरण के लिए पुराने बैकअप-ऑफ-बैकअप) भी 'सहेजे गए' हैं।
नन्ने

इसने मेरा $ $ बचा लिया। मैंने लाइनोड पर 12GB + सिस्टम को नया नोड बनाने के लिए क्लोन किया। 5+ साल बाद, यह अभी भी काम करता है। धन्यवाद दोस्तों!
गीथ

इसलिए क्लोन को स्वीकार करने के लिए तैयार क्लोन किए गए फाइल सिस्टम को विभाजित करते समय, मेरे रूट विभाजन में बूट फ्लैग सेट होना चाहिए, जबकि मैं उन्हें इन्सुलेट रख रहा हूं, या क्या मैं क्लोन ड्राइव को उत्पादन में डालने से ठीक पहले सेट करता हूं। अन्यथा मुझे लगता है कि क्लोन ड्राइव तब बूट करने योग्य है जो वास्तव में नहीं चाहता है। मेरी स्थिति में मेरा क्लोन ड्राइव एक अलग सर्वर पर एक डिस्क है। और Rsync को ठेस के साथ संरेखित करने के लिए उपयोग किया जाता है।
NZ देव

11

मैंने बस यह सफलतापूर्वक किया (एक जोड़े की कोशिश के बाद)।

मैंनें इस्तेमाल किया

sudo rsync -ahPHAXx --delete --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} / /mnt

फिर मैंने /mnt/etc/fstabबूट विभाजन और मेरे स्वैप स्पेस के लिए अपनी फ़ाइल रीसेट कर दी ।

तब मुझे GRUB को रीसेट करने की आवश्यकता थी

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
sudo grub-install --recheck /dev/sdX
sudo update-grub

ध्यान दें कि यह केवल MBR स्वरूपित डिस्क के लिए है।
Teque5

2

इस ड्राइव के साथ बूटिंग को ठीक करने का प्रयास न करें; मेरी सिफारिश:

  1. विफल मशीन पर एक हॉटस्पैप को जोखिम में डालने के बजाय किसी अन्य मशीन पर ड्राइव में प्लग करें ।
  2. rsync नई डिस्क पर आपकी गैर-सिस्टम फ़ाइलें।
  3. एक अलग हार्ड डिस्क पर, एक बूट, एक न्यूनतम रूट और एक स्वैप बनाएं। उसी ऑपरेटिंग सिस्टम को स्थापित करें जिसे आप बीमार हार्ड डिस्क से क्लोन करना चाहते हैं।
  4. इस नई डिस्क से बूट करें (आदर्श रूप से एक अलग मशीन पर, यदि आप लक्ष्य होस्ट पर डाउनटाइम जोखिम नहीं उठा सकते हैं, अन्यथा आप इस डिस्क के साथ लक्ष्य होस्ट बूट कर सकते हैं)।
  5. सही माउंट बिंदु के साथ इस नई प्रणाली में चरण # 2 से डिस्क जोड़ें। अब आपके पास सिस्टम ड्राइव का क्लोन है। आप (वैकल्पिक रूप से) इस नई डिस्क पर विभाजन की प्रतिलिपि बना सकते हैं, लेकिन मेरी अनुशंसा है कि आप अपने ओएस को बूट करने के लिए डिस्क को न्यूनतम आवश्यकता के रूप में रखें। जैसा कि आपने महसूस किया है, प्राथमिक विभाजन पर बहुत सी चीजें होने से वसूली मुश्किल हो जाती है। सुनिश्चित करें कि आप नेटवर्क कॉन्फ़िगरेशन को सही ढंग से कॉपी करते हैं क्योंकि आपका सर्वर हेडलेस है।
  6. बस इस नए डिस्क जोड़े के साथ बीमार सिस्टम पर ड्राइव को बदलें (यदि आप चरण # 4 में शुरू में लक्ष्य को बूट करने के लिए नहीं चुनते हैं)।
  7. रीबूट।

मैं डाउनटाइम को जोखिम में डाल सकता हूं, यह एक गैर-जरूरी सर्वर है। मैं हॉटस्पैप (मूल रूप से हॉट-ऐड) के लिए जा रहा था क्योंकि वह कॉपी बहुत तेज होगी। मेरे द्वारा सोचा गया बहुत अधिक जोखिम नहीं होना चाहिए, क्योंकि हम SATA (II कम से कम) बात कर रहे हैं। इसके अलावा, अतिरिक्त बूट डिस्क का सुझाव देने का क्या कारण है? कि पहले से ही स्थापित सॉफ्टवेयर, homedirs आदि के लिए मामलों को जटिल नहीं होगा? यह और अधिक काम की तरह लगता है जिसे मैं टालने की कोशिश कर रहा हूं: D
Nanne

इसका मैं उत्पादन में उपयोग करता हूं; मैं माउंट / होम, / etc, / var, / usr और / बाह्य डिस्क पर विकल्प (वास्तव में LVM पर), और / और एक अलग डिस्क पर बूट करता हूं। इस तरह मुझे चिंता करने की ज़रूरत नहीं है जब मुख्य डिस्क विफल हो जाती है तो मैं अपनी सेवाओं को प्रभावित किए बिना इसे स्वैप कर देता हूं :) यह शुरू में थोड़ा काम है लेकिन लंबे समय में आपको बचाता है। खासकर जब आप एक विभाजन पर अंतरिक्ष से बाहर निकलते हैं और डाउनटाइम के बिना वॉल्यूम जोड़ने की आवश्यकता होती है।
बुरहान खालिद

जब आप एक अच्छा बिंदु बनाते हैं, तो यह एक आवश्यकता नहीं है जो मेरे पास वर्तमान में है, और न ही :)। सिस्टम में कई अन्य डिस्क हैं (लगभग 7) और मुझे कहीं रेखा खींचनी होगी; डी। इसलिए OS को इस समय विभाजन की आवश्यकता नहीं है। मेरा मतलब है: मैं मानता हूं कि प्रणाली अच्छी है, बस कुछ ऐसा नहीं है जिसे मैं अभी खोज रहा हूं; डी। इसलिए अगर मैं यह सब 1 डिस्क पर छोड़ता हूं, तो मैं जो बाहरी नकल कर रहा हूं, वह इसे गंभीरता से धीमा कर देगा, है न?
नन्ने

अपने इंटरफेस पर बाहरी पर निर्भर करता है, ईथरनेट पर यह तेज होना चाहिए, यूएसबी 2 पर तेज, यूएसबी 3 पर भी तेज। यह इसे बहुत धीमा नहीं करेगा - निश्चित रूप से उन निर्देशिकाओं की प्रतिलिपि न करें, जिन्हें लिखा जा रहा है (जैसे कहना, / tmp, जिसे आपको किसी भी तरह की आवश्यकता नहीं है) या कहीं भी पाइप को लिखा जा रहा है।
बुरहान खालिद

0

मैं कई बार एक Centos Freepbx distro पर rsync में बिता चुका हूं और एक बूट करने योग्य नई डिस्क है और अंत में fstab को ठीक करने के बाद और UUID को ठीक करने के बाद यह काम नहीं करता है।

इसे काम करने का अंतिम चरण है

dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1
grub

जब आप ग्रब सीएलआई में हों (यानी grub>प्रॉम्प्ट पर):

device (hd0) /dev/sda
device (hd1) /dev/sdb
root (hd0,0) 
setup (hd0) 
root (hd1,0)
setup (hd1)
quit

प्रेस enterऔर आप अब शटडाउन कर सकते हैं, पुरानी डिस्क को हटा सकते हैं और नए के साथ बूट कर सकते हैं।

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