मैंने कल रात एक गलती की, जिसने मेरे फ़ाइल-सर्वर के 1800GB को अनायास ही हटा दिया


27

मैंने इस कमांड को कल चलाया, मैंने एक परीक्षण मशीन पर सोचा था, लेकिन यह एसएसएच के माध्यम से जुड़ा एक फ़ाइल-सर्वर था।

sudo rm -rf /tmp/* !(lost+found)

मेरा टर्मिनल एमुलेटर कोनसोल है। मेरा सिस्टम डेबियन 7 है।

सवाल:

क्या इस कमांड ने / tmp की फाइलों के अलावा अन्य फाइलों को डिलीट कर दिया है?


क्या ऐसा हो सकता है कि / होम फाइल सिस्टम आरोहित न हो?
इमैनुएल

@Emmanuel मैंने पुष्टि की है कि फाइलें खो गई हैं।
कुछ समय

1
आपका इतिहास किसी भी त्रुटि को नहीं दिखाता है। आपने "किल $ (lsof / usr ...)" करते हुए कई ऑपरेटिंग सिस्टम प्रक्रियाओं को मार डाला। बहरी साझा करने वाली फ़ाइल प्रणाली प्रभावित हो सकती है। क्या आपने सेवाओं को फिर से शुरू करने या फाइलर को रिबूट करने की कोशिश की?
इमैनुएल

1
@somethingSomething कोनसोल एक शेल नहीं है, यह केडीई का डिफ़ॉल्ट टर्मिनल एमुलेटर है। टर्मिनल में कुछ अक्षर टाइप करने की कोशिश करें, जैसे dsgsadfsfऔर हिट दर्ज करें। परिणाम देखें। अगर यह है bash: dsgsadfsf: command not found, तो आपका खोल है bash
गाबोर फार्कस

5
मुझे उम्मीद है कि आपके पास अच्छे बैकअप होंगे। यदि आप पुनर्प्राप्ति का प्रयास करने जा रहे हैं, तो उस प्रणाली का उपयोग करना बंद कर दें, जब तक आप प्रयोग करने के लिए ड्राइव की बाइट-स्तरीय प्रतिलिपि बनाने में सक्षम न हों। विचाराधीन फाइल सिस्टम में कोई भी नुकसान को कम करेगा।
एक सीवीएन

जवाबों:


43

बैश में सही सिंटैक्स निम्नलिखित है:

rm /tmp/!(lost+found)

जैसा कि @goldilocks ने टिप्पणियों में लिखा है, मूल कमांड क्वेरी पर एक विस्तार करता है (यह /tmpफ़ोल्डर में सभी फ़ाइलों को हटा देता है , फिर चालू हो जाता है, और वर्तमान में काम कर रहे फ़ोल्डर में सभी फ़ाइलों को हटा देता है, आपके मामले में homeफ़ोल्डर)।

आप यह जांचने की कोशिश कर सकते हैं कि क्या आप अपना कुछ डेटा रिकवर कर सकते हैं। यहां लिनक्स डेटा रिकवरी के बारे में एक सवाल है


28
आह, तो यह अनिवार्य रूप से प्रसिद्ध "मेरी कमांड लाइन में लापता स्थान का एक और मामला है जिसने मेरे सभी डेटा को नष्ट कर दिया" - जैसे rm -rf / tmp^ ^ में
मार्टिन वॉन विटिच

8
मैं पर्याप्त जोर नहीं दे सकता, कि sysadmin व्यामोह कारणहीन नहीं है। :) हमेशा एक स्थान पर अपने सबसे मूल्यवान डेटा का बैकअप लें, जहां आप केवल रूट के रूप में लिख सकते हैं।
गैबोर फार्कस

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

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

1
@simonzack यह परिणामी रूप से बढ़ते हुए दुर्घटनाओं की संभावना को कम कर सकता है, यह मेरे लिए पर्याप्त है :)
गेबर फार्कस

26

!(lost+found)अपने में rmआदेश शायद घातक गलती थी:

1978  rm -rf /tmp/* !(lost+found)
1979  sudo rm -rf /tmp/* !(lost+found)

मुझे ठीक से पता नहीं है कि उसके bashसाथ क्या हो रहा है, लेकिन यह कमांड मेरे अंदर सब कुछ प्रिंट करता है /tmp/और मेरी वर्तमान निर्देशिका (जो वर्तमान में है ~) भी सब कुछ :

echo /tmp/* !(lost+found)

!(folder)एक कमांड मैं एक बार गया, किन को छोड़ कर सभी नष्ट कर दिया का हिस्सा है folder
कुछ तो

3
ऐसा लगता है कि कुछ काम हो सकता है; बैश मैं ऐसा नहीं सोचता। !lost+found: event not foundजैसा !कि मुझे इतिहास से कमांड प्राप्त करने के लिए उपयोग किया जाता है।
13:13 पर wurtel

9
ओह! "मुझे नहीं पता कि वास्तव में बैश उस के साथ कर रहा है" -> यह एक विस्तार कर रहा है। लगता है कि "इसके अलावा सब कुछ" क्या है? cd /; echo !(lost+found)> _ <
Goldilocks

13
कृपया ध्यान रखें कि !(foo)बैश में "फू को छोड़कर सभी" के रूप में काम करता है, यदि केवल extglobविकल्प सेट किया गया हो। इसके अलावा ओपी ने यह नहीं बताया कि वह किस शेल का उपयोग कर रहा है, इसलिए वास्तव में यह अनुमान लगाना कठिन है कि rm !(lost+found)उसके मामले में वास्तव में कमांड ने क्या किया है।
jimmij

5
शानदार टिप्पणी, हालांकि ओपी ने कहा कि वह डेबियन 7 का उपयोग कर रहा है, जिसमें bashडिफ़ॉल्ट शेल है। उन्होंने सबसे अधिक संभावना यह नहीं बदला। इसके अलावा, डेबियन 7 में, extglobविकल्प trueडिफ़ॉल्ट रूप से सेट किया गया है (मैंने अभी यह जाँच की है)।
गैबोर फार्कस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.