दूरस्थ सर्वर पर गलती से निष्पादित sudo rm / *


11

मैंने गलती rm /*से एक दूरस्थ उबंटू सर्वर में रूट के रूप में लॉग इन किया और बहुत सारे बायनेरिज़ को हटा दिया और वर्तमान में मैं फ़ाइलों को पुनर्स्थापित करने के लिए ssh या ftp के माध्यम से लॉग इन नहीं कर सकता (और सर्वश्रेष्ठ के लिए आशा)।

क्या किसी तरह से इस झंझट को ठीक करने का कोई तरीका है, या क्या मुझे डेटासेंटर को बुलाना चाहिए और एक प्रारूप के लिए पूछना चाहिए?


2
क्या आप पुष्टि कर सकते हैं कि यह एक भौतिक या आभासी सर्वर है? यह भी कि क्या आपने -rतर्क को चलाया rmया वास्तव में आपने जो आदेश दिखाया था, वह ठीक ही था। क्या आपका होस्टिंग प्रदाता उस विशेष मशीन के बाहर डिस्क छवियों तक पहुंचने का कोई तरीका प्रदान करता है?
कालेब

जवाबों:


26

rm /*बहुत कम हटाना चाहिए। वहाँ कोई -rझंडा नहीं है जो पुनरावर्ती रूप से किसी भी चीज़ को हटा देगा, और इसके बिना निर्देशिकाओं को हटाया नहीं जाएगा (और यदि निर्देशिकाओं को हटा दिया गया था, तो केवल खाली ही हटाए जा सकते हैं)। यह उत्तर उस धारणा पर आधारित है जिसे आपने नहीं चलाया था rm -rf /*

परिणाम के रूट फाइल सिस्टम में एकमात्र फाइलें कर्नेल और इनइटर्ड (हालांकि एक उबंटू सिस्टम पर मैं देख रहा हूं, वे मौजूद नहीं हैं) के लिए /lib64सीमलिंक हो सकते हैं या 64-बिट सिस्टम पर एक सिमलिंक हो सकते हैं।

समस्या सिर्फ यह हो सकती है कि /lib64 -> /libसिमिंक को हटा दिया गया है। हालांकि यह बहुत बुरा है, क्योंकि हर कार्यक्रम के बारे में उस सहृदय पर निर्भर करेगा:

$ ldd /bin/bash
...
    /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)

यह ld-linuxडायनेमिक लोडर है, और यदि यह उपलब्ध नहीं है, तो आप किसी भी डायनामिक निष्पादन को नहीं चला सकते। इससे लॉग इन करना बेहद मुश्किल हो जाएगा और आप बिलकुल भी सक्षम नहीं होंगे।

एक तारणहार हो सकता है busybox। इसे चलाने के लिए जाँच करें:

$ ldd /bin/busybox
    not a dynamic executable

इस मामले में, बिजीबॉक्स को चलाने योग्य होना चाहिए, लेकिन सवाल यह है कि आप इसे कैसे चला सकते हैं?

यदि आपके पास बूट लोडर प्रॉम्प्ट तक पहुंच है, तो आप बूट करने में सक्षम हो सकते हैं init=/bin/static-sh, जहां स्थैतिक-श एक सिम्लिंक है busybox( /bin/static-shमौजूद है - यह मेरे सिस्टम पर है), लेकिन यह मानक उबंटू नहीं है। यह बग बताता है कि यह उपलब्ध है। ।)

एक बार जब आपके पास एक रूट शेल होता है, तो आप /lib64सिमिलिंक को फिर से बना सकते हैं । पढ़ने / लिखने के लिए आपको पहले रूट फाइल सिस्टम को रिमूव करना पड़ सकता है। बिजीबॉक्स में ये उपकरण होने चाहिए, जिन्हें आप निम्न प्रकार से चला सकते हैं:

# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash# 

यदि बैश काम करता है, तो समस्या को ठीक किया जाना चाहिए।


18

यदि आपको वर्तमान इंस्टॉल से फ़ाइलों को पुनर्प्राप्त करने की आवश्यकता है, तो अपने होस्ट से आपकी सहायता करने के लिए कहें। मान लें कि यह VM है, तो आपकी डिस्क को इमेज करने, अपने होस्ट को स्क्रैच से पुनर्स्थापित करने और अपने नए फाइल सिस्टम में पुरानी डिस्क की छवि को डंप करने में उनके दिन के लगभग पांच मिनट लगते हैं।

यदि आपको किसी चीज की आवश्यकता नहीं है, तो बस उन्हें पुनर्स्थापित करने के लिए प्राप्त करें। लगभग हमेशा तेज विकल्प जब आप चीजों को कठिन बनाते हैं।


2
सहमत होना। यदि वे एक उचित रूप से सक्षम VM होस्टिंग सेवा हैं, तो उन्हें ऐसा करने में सक्षम होना चाहिए। जितनी जल्दी हो सके उन्हें संपर्क करें सुनिश्चित करें कि उनके पास अभी भी एक प्री-स्कूप बैकअप होगा।
शादुर

2

यदि आपने / lib64 सिमिलिंक को / lib पर हटा दिया है और आपके पास अभी भी कंसोल खुला है, तो बस करें:

/lib/ld-linux-x86-64.so.2 /bin/ln -s /lib /lib64

और आपको सामान्य रूप से फिर से कमांड चलाने में सक्षम होना चाहिए। अपने वास्तविक ld लाइब्रेरी के लिए पथ समायोजित करें। आप किसी भी अन्य कमांड को भी चला सकते हैं, जिसे आप इसे पूरी ld लाइब्रेरी पथ के साथ पूर्ववर्ती करके चाहते हैं।


1

भौतिक सर्वर तक पहुंच के बिना आप ऐसा नहीं कर सकते।


तो, मैं एक प्रारूप के लिए पूछना चाहिए, या वहाँ एक तरीका है उन फ़ाइलों को फिर से सब कुछ whipping के बिना बहाल करने के लिए?
Ant

आप भूल जाते हैं कि एक उच्च संभावना है कि यह एक आभासी सर्वर है जिसमें "भौतिक सर्वर" उच्चतर दूरस्थ रिमोट टूल तक पहुंच को छोड़कर ज्यादा मायने नहीं रखता है।
कालेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.