रूट डायरेक्टरी को पुनरावर्ती रूप से ले जाना


14

मेरे पास एक उबंटू डेस्कटॉप है जो सर्वर के रूप में उपयोग किया जाता है। आज सुबह मैंने गलती से अपनी सारी जड़ें हिला दीं../

 root@server:/tmp/UPS/up/upsilon# mv /* ../
 mv: impossibile spostare "/dev" in "../dev": Dispositivo o risorsa occupata
 mv: impossibile spostare "/proc" in "../proc": Dispositivo o risorsa occupata
 mv: impossibile spostare "/run" in "../run": Dispositivo o risorsa occupata
 mv: impossibile spostare "/sys" in "../sys": Dispositivo o risorsa occupata
 mv: impossibile spostare "/tmp" in una sottodirectory di sé stessa, "../tmp"
 root@server:/tmp/UPS/up/upsilon# ls
 -bash: /bin/ls: No such file or directory

मैं दूर से ssh में जुड़ा हुआ था। अब, मैं अब और नहीं पहुँच सकता। मैं वेबमिन भी नहीं देख सकता।

तो, अब मैं सही प्रणाली को पुनः आरंभ नहीं कर सकता? और मुझे सिस्टम कंसोल पर शारीरिक रूप से पहुंचना होगा और यह कमांड टाइप करना होगा:

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*}

सही?

मेरी रूट डायरेक्टरी कहां गई और मैं इसे कैसे वापस ले सकता हूं? क्या उपरोक्त कमांड काम करेगा?


10
वाह! यह एक प्रभावशाली गलती है! :(
स्परहॉक

3
क्या मैं सही ढंग से समझता हूं कि उस समय काम करने वाली निर्देशिका थी /? यदि हां, तो जब मैं कोशिश mv tempdir/ ../, मैं mv: ‘tempdir/’ and ‘../tempdir’ are the same file, कुछ भी नहीं के साथ चले गए।
स्परहॉक

अगली बार, रूट के रूप में लॉगिन न करें। और अगर आप स्विच mvजोड़ने जा रहे हैं -i
ब्रिअम

1
मैं असहमत हूं। कभी-कभी आप हर आज्ञा के सामने नासमझी करने के लिए सीखने के बजाय जड़ के रूप में लॉग इन करना चाहते हैं। हालाँकि रूट के रूप में लॉग इन करते समय सावधान रहें। विशेष रूप से हटाएं और आदेशों को स्थानांतरित करें। --- फिर भी, त्रुटियां होती हैं और हम उनसे सीखते हैं। @MaxDL: क्या आप बैकअप से / पार्टिशन को पुनर्स्थापित कर सकते हैं? क्या आपके पास बैकअप है? क्या आप OS को बूट किए बिना सर्वर कंसोल तक पहुंचने के लिए एक डेल DRAC, एक HP ILO या अन्य रिमोट एक्सेस टूल का उपयोग कर सकते हैं?
हेन्नेस

जवाबों:


12

आपने रूट डायरेक्टरी को स्थानांतरित नहीं किया है (आप नहीं कर सकते हैं), आपने अभी तक लगभग सब कुछ इसमें स्थानांतरित कर दिया है, जो भी आप जिस रास्ते पर थे, उसके मूल निर्देशिका में ले गए हैं।

चीजों को जटिल करने के लिए, आप भी चले गए हैं mvताकि अपेक्षा के अनुरूप काम न हो। निम्नलिखित काम करना चाहिए (जब तक आप यह पूछने के बाद से रिबूट नहीं किया है!) यदि आप अभी भी उसी निर्देशिका में हैं, तो जब आप अपना आखिरी एमवी निकालते थे।

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /

यदि आपके पास उनमें से कोई भी नहीं है, तो बस उन्हें कमांड से हटा दें।

और अगर आपके पास पहुंच नहीं है (आप इस स्थिति में रहते हुए एक नया लॉगिन नहीं कर पाएंगे) तो आपको फाइल सिस्टम को बाहरी रूप से माउंट करना होगा (लाइवसीडी जैसी किसी चीज के माध्यम से और फाइलसिस्टम को माउंट करें और फिर फाइलों को स्थानांतरित करें सही जगह पर। ब्रियम के जवाब में इस हिस्से की मदद करनी चाहिए।


मुझे उलझन में क्या लाइन थी root@server:/# ls, जो मुझे सुझाव देती थी कि वर्तमान निर्देशिका थी /। (इसलिए मेरी ऊपर की दूसरी टिप्पणी।)
११:१३

क्षमा करें, यह पूरी कमांड है: रूट @ सर्वर: / tmp / UPS / up / upsilon # mv / * ../ मैं ssh में दूरस्थ रूप से जुड़ा हुआ था। अब, मैं अब और नहीं पहुँच सकता।
मैक्सडेल

फिर ठीक करने का आदेश है/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
स्पार्कहॉक

10

यदि आप पहले से ही रिबूट या लॉग आउट हो गए हैं, तो आप अपने सिस्टम को ठीक करने के लिए एक लाइवसीडी / यूएसबी में बूट कर सकते हैं। मैं उस हिस्से को छोड़ने जा रहा हूं, जहां आप जानते हैं कि उबंटू के साथ लाइव सिस्टम और बूट कैसे बनाया जाता है (वैकल्पिक सीडी भी काम करता है, बस एक रूट शेल में छोड़ दें):

पहले आपको अपना सिस्टम कहीं पर माउंट करना चाहिए, इसलिए:

mkdir /mnt/system
mount /dev/sda1 /mnt/system

मैं मान रहा हूं कि /dev/sda1आपकी जड़ है। यदि आप अलग हो गए हैं /binया /usrआपको उन्हें भी माउंट करना चाहिए:

mount /dev/sda2 /mnt/system/usr

अब, आपको उस आपदा तक पहुंचना चाहिए जो आप तबाही से पहले थे:

cd /mnt/system/tmp/UPS/up/upsilon

अब उस आज्ञा के साथ जो ओली ने दी थी, जिसे मैं मूढ़ता के साथ कॉपी करूंगा:

mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /mnt/system/

अब सत्यापित करें कि सब कुछ क्रम में है:

# ls /mnt/system/
bin boot etc home media mnt opt root sbin selinux usr var etc...

अपने सिस्टम को रिबूट करें और भविष्य में अधिक सतर्क रहें।


1

मेरे पास यह मुद्दा था, मैंने पाया कि मुझे इस तरह mv कमांड को कॉल करने की आवश्यकता है:

/tmp/UPS/up/lib/ld-linux-x86-64.so.2 --library-path /tmp/UPS/up/lib/ /tmp/UPS/up/test/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var} /

आशा है कि यह दूसरों की मदद करता है।

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