मैंने अपने पूरे सर्वर को आकस्मिक रूप से ज़िप किया


10

ठीक है, अगर कोई ईश्वर की भूमिका निभाना चाहता है और मैं चमत्कार कर रहा हूं।

इसलिए, मुझे एक स्क्रिप्ट बनाने का काम दिया गया, जिसमें ऐसी फाइलें मिलीं जो 6 महीने से पुरानी हैं, उन्हें ज़िप किया और फिर उन्हें हटा दिया। Tihs स्क्रिप्ट बनाने के अपने तरीके पर मैंने इसे चलाया:

find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla

और इसने हर एकल फ़ाइल को एक .gz एक्सटेंशन दिया। अब मैंने इसे देखा जैसे ही मैंने देखा, लेकिन यह बहुत देर हो चुकी थी। कमांड के पूरा होने पर मेरा कोई भी बैश कमांड काम नहीं करेगा क्योंकि $ PATH वैरिएबल अपने आप खाली हो गया। मैंने महसूस करने से पहले बहुत सी चीजों की कोशिश की कि समस्या क्या थी।

तो सब कुछ unzipping मैं अभी भी बूट करने में असमर्थ हूँ। मैं बचाव के लिए इसे बनाने में कामयाब रहा हूँ, के बाद मैं के लिए ऑनलाइन निर्देशों का पालन किया है:

root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]

मेरे लिनक्स को आंशिक रूप से बूट करने के बाद, लेकिन मुझे निम्नलिखित त्रुटियां देता है:

Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.

मैंने फाइलसिस्टम की मरम्मत करने की कोशिश की है, मैंने 3 अलग-अलग लाइवसीडी / रेस्क्यू डिस्क से बूट किया है, मैंने 2 अलग-अलग dicsc से बूट-रिपेयर किया है। मैंने बलपूर्वक fscks किया ...

मैं वास्तव में विचारों से बाहर हूं और मुझे इस सर्वर को कम से कम बूट करने की आवश्यकता है ताकि मैं अपने SQL डेटाबेस को पुनर्प्राप्त कर सकूं। मैं मदद के लिए बेताब हूं, जरूरत पड़ने पर मैं भी पैसे दूंगा।

मैं एक संभावित समाधान खोजने के लिए पूरे दिन सीधे 3 दिनों के लिए मंचों को झूठ बोल रहा हूं और मैं अभी भी उसी बिंदु पर हूं ... कृपया मदद करें?


3
यदि वे mysql db के हैं तो आपको बूट करने की आवश्यकता नहीं है; उस स्थिति में मैं ड्राइव को एक दास के रूप में माउंट करने और / var / lib / mysql निर्देशिका पर कॉपी करने की कोशिश
करूंगा

8
नए स्टोरेज डिवाइस पर क्लीन इंस्टॉल। पुरानी ड्राइव को माउंट करें, आवश्यकतानुसार डेटा ट्रांसफर करें। मैं शर्त लगा सकता हूं कि मरम्मत करना प्रयास के लायक नहीं होगा।
Zoredache

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

1
because of version differences,ठीक उसी संस्करण के साथ फिर से स्थापित करें। we have corruption issues,आपका डेटा दूषित हो सकता है। सिस्टम को रिपेयर करना इसलिए यह बूट करने योग्य है, अगर डेटा ट्रैश हो गया है तो यह आपकी मदद नहीं करेगा। यदि आपका gzip कमांड आपके डेटाबेस फ़ाइलों को संकुचित करता है जबकि डेटाबेस का उपयोग किया जा रहा है तो भ्रष्ट होना अपरिहार्य लगता है।
ज़ॉडेचेस

5
यदि आप उन आदेशों को चलाने के दौरान आपका DB सॉफ़्टवेयर चला रहे थे, तो आप DBs पुनर्प्राप्त करने में सक्षम नहीं हो सकते हैं। Gzip ने खुशी-खुशी फ़ाइल को खोल दिया होगा, फिर उसने इसे अनलिंक कर दिया। लेकिन आपके DB सॉफ्टवेयर में अभी भी फाइल खुली थी और वह इसमें बदलाव कर रहा था। जैसे ही यह बंद हुआ, फाइल फिर हटा दी गई।
टॉपरवेलगन

जवाबों:


8

यह इस बात पर निर्भर करेगा कि क्या फाइलसिस्टम की मरम्मत आपके लिए पर्याप्त है, जो कि लाइवसीडी से उन विभाजनों को माउंट करने में सक्षम है। सिस्टम को बूट करने की कोशिश करने से परेशान न हों। सबसे पहले, विभाजन को माउंट करें और सभी .gz फ़ाइलों को अनज़िप करें। यह आपको init और सिस्टम बायनेरिज़ की वर्किंग कॉपी देगा। फिर आप बूट सेक्टर को ठीक करने के लिए ग्रब का उपयोग कर सकते हैं। फिर सिंगल यूजर मोड पर बूट करें और फाइलसिस्टम को फिर से fsck करें। यदि वह काम करता है, तो आपके पास एक रनिंग सिस्टम होगा। आपके पास अनज़िप्ड फ़ाइलों (जैसे मैन पेज) का एक गुच्छा होगा, जिसे वास्तव में ज़िप किया जाना चाहिए, लेकिन यह अनबूटेड सिस्टम होने से बेहतर है।

यदि आप LiveCD से विभाजनों को माउंट नहीं कर सकते हैं, तो आप दुर्भाग्य से भाग्य से बाहर हैं। उस बिंदु पर आपका सिस्टम कुछ भी ठीक नहीं करेगा।


1
यह वास्तव में एक आकर्षण की तरह काम करता है ... मैं आपको इसके लिए पर्याप्त धन्यवाद नहीं दे सकता! MySQL बूट नहीं होगा, लेकिन मैंने अभी तक एक - fsck नहीं किया था, उम्मीद है कि यह इसे ठीक कर देगा! धन्यवाद
डेक्सिरियन

1
बहुत बढ़िया। खुशी है कि यह मदद की।
माइकल मार्टिनेज

9

पहली बात यह है कि मैं LiveCD वातावरण चला रहा हूं और हर चीज को अनजिप करने का प्रयास कर रहा हूं, उम्मीद है कि सिस्टम को बूट करने योग्य स्थिति में लौटाएगा। नोट: मैं संभावित डेटा भ्रष्टाचार के बारे में चिंतित हूँ अगर मूल gzip प्रक्रिया बाधित हुई थी।

अन्यथा मैं DB को एक नई प्रणाली में माइग्रेट करने की कोशिश करूँगा जैसा कि दूसरों ने सुझाव दिया है लेकिन जैसा कि आपने सामना किया है कि श्रम गहन निर्भरता और कॉन्फ़िगरेशन समस्याएं हो सकती हैं जिन्हें व्यक्तिगत रूप से हल करने की आवश्यकता होगी।


त्वरित प्रश्न: हम पुराने SQL डेटाबेस सर्वर से अनिश्चित हैं, और नया सर्वर एक अलग लिनक्स डिस्ट्रो का उपयोग कर रहा है। नया सर्वर WHM के साथ CentOS चला रहा है, और पुराना सर्वर या तो डेबियन / अनबंटू था। तो मेरा सवाल यह है कि मैं भ्रष्टाचार और व्हाट्सएप के बिना अपने SQL डेटाबेस को प्रभावी ढंग से कैसे चला सकता हूं?
डेक्सिरियन

6

यहां आम सहमति, कि आपको बस एक कार्य प्रणाली में डिस्क को माउंट करना चाहिए और अपनी फ़ाइलों को बचाना चाहिए, गलत नहीं है। समझदारी की बात है। लेकिन दूसरा तरीका अधिक मजेदार है, और बहुत ही शैक्षिक है। मैंने गन्दी परिस्थितियों से अपने तरीके से लड़ते हुए बहुत कुछ सीखा है जहाँ अन्य लोगों ने बस छोड़ दिया होगा और खरोंच से पुनः स्थापित किया होगा। (ऐसे सर्वर पर नहीं जो अन्य लोगों पर निर्भर करता है ...)

वैसे भी, अब तक आपके पास एक initramfs (initrd) है जो चलता है। यह एक अच्छी शुरुआत है। लेकिन यह हैंडऑफ को init में पूरा नहीं कर सकता क्योंकि init अब init.gzशायद है? कोई भी प्रगति करने के लिए, यह जानने में मदद मिलेगी कि आपके पास लिनक्स वितरण क्या है, इसलिए हम यह देख सकते हैं कि आपातकालीन उपयोग के लिए इसके initramfs में कौन से उपकरण उपलब्ध हैं।

आपके द्वारा प्रस्तुत त्रुटि संदेश ऐसे दिखते हैं जैसे वे डेबियन के इनट्रैमफैफ़्स से आ सकते हैं। यदि यह डेबियन है, तो आपको (initramfs)अंतिम त्रुटि के बाद अगली पंक्ति पर एक शेल प्रॉम्प्ट प्राप्त करना चाहिए । यदि आपने किया है, तो आपको यह देखना चाहिए कि उन असफल माउंटों के साथ क्या हो रहा है। है /root/devयाद आ रही? ( /rootयह है कि अपने सामान्य रूट fs initramfs के चलने के दौरान आरोहित किया जाना चाहिए)

यदि आपको शेल प्रॉम्प्ट नहीं मिला, तो उसके बाद जो आया No init found. Try passing init= bootarg.वह दिलचस्प होगा। भले ही यह एक ब्लिंकिंग कर्सर के अलावा कुछ भी नहीं था, यह एक सुराग है। यदि यह पूरी तरह से जमे हुए लगता है, तो इस बारे में कुछ जानकारी प्राप्त करने का प्रयास करें कि क्या प्रक्रियाएँ अभी भी जादू सिस्कारिक या Ctrl + स्क्रॉललैक का उपयोग कर रही हैं।

Debian initramfs आपको break=कर्नेल कमांड लाइन में एक पैरामीटर जोड़कर कुछ विशेष स्थलों पर एक शेल का अनुरोध करने देता है । उदाहरण के लिए, Running /scripts/init-bottomलाइन से पहले एक शेल प्राप्त करने के लिए , उपयोग करें break=bottom

एक तरफ: मैं नहीं जानता कि कैसे findकमांड हर फाइल को gzipped कर सकता है ... 180 और 400 दिनों की उम्र के बीच फ़ाइलों का चयन करने के उद्देश्य से यह मुझे सही लगता है।


जब मैं एक ls / root करता हूं तो कुछ भी नहीं मिलता है। तो मैं इसे ले सकता हूँ fs बढ़ते बूट पर ठीक नहीं है? मैं इसे कहां बदल सकता हूं?
डेक्सिरियन

1
@Dexirian ताकि आप एक सुरक्षा प्रॉम्प्ट (यदि आप उपयोग की क्या ज़रूरत थी मिला break=bottom?) ... हाँ, समय यह माउंट करने के लिए कोशिश कर रहा है द्वारा /root/devऔर /root/procऔर /root/sys, /rootअसली जड़ फाइल सिस्टम होना चाहिए। इसे माउंट करने में विफल होने के बारे में पहले एक त्रुटि संदेश रहा होगा। क्या आपने root=कर्नेल कमांड लाइन में एक पैरामीटर शामिल किया था? मेरी याददाश्त इस बिंदु पर थोड़ी फजी है लेकिन मुझे लगता है root (hd0,0)कि ग्रब सिर्फ यह बताता है कि इसकी सपोर्ट फाइल्स कहां से मिलेंगी, और आपको अभी भी कर्नेल को अलग से बताने की जरूरत है कि रूट कहां है।

हां, मैंने रूट =, कर्नेल = initrd =, और सेटअप = का उपयोग किया, मुझे ब्रेक = बॉटम का उपयोग नहीं करना पड़ा। और मैंने पहले से विफल माउंट संदेश को स्पॉट नहीं किया, क्योंकि यह वास्तव में जल्दी से स्क्रॉल करता है
डेक्सिरियन

@Dexirian कंसोल स्क्रॉलबैक उपलब्ध है? Shift + PgUp। और आप इसे माउंट कर सकते हैं वह (initramfs) शीघ्र, कुछ पसंद है mount -r /dev/sda1 /root? cat /proc/partitionsदेखना है कि क्या उपलब्ध हैं।

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