Rm कमांड जारी होने पर फाइलें कहां जाती हैं?


98

हाल ही में मैंने गलती rmसे फ़ाइलों के एक सेट पर किया था और यह मुझे सोच रहा था कि वास्तव में ये फाइलें कहां समाप्त होती हैं?

यह कहना है, जब एक GUI के साथ काम कर रहा है, हटाए गए फ़ाइलें ट्रैश में जाते हैं। इसके लिए क्या समान है rmऔर क्या rmकमांड को पूर्ववत करने का एक तरीका है ?


3
यहाँ एक संभावित डुप्लिकेट है। linux पर पूर्ववत करें । लेकिन मुझे वास्तव में यकीन नहीं है कि यह ऐसा है जहां फाइलें जाती हैं, वहाँ से अलग है जो पूर्ववत करने का एक तरीका है।
xenoterracide

जवाबों:


120

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

इसके लिए कोई कचरा नहीं है rm, न ही होना चाहिए। यदि आपको ट्रैश कैन की आवश्यकता है, तो आपको एक उच्च-स्तरीय इंटरफ़ेस का उपयोग करना चाहिए। trash-cliउबंटू पर एक कमांड-लाइन उपयोगिता है , लेकिन ज्यादातर समय GUI फ़ाइल प्रबंधक जैसे Nautilus या Dolphin का उपयोग एक मानक कचरा कैन प्रदान करने के लिए किया जाता है। कचरा कर सकते हैं मानक ही है। डॉल्फिन में ट्रैश की गई फाइलें नौटिलस से कूड़ेदान में दिखाई देंगी।

फ़ाइलें आमतौर पर कहीं स्थानांतरित की तरह ~/.local/share/Trash/files/जब स्थानांतरित कर रहे हैं । rmयूनिक्स / लिनक्स पर आदेश के बराबर है delDOS / Windows के जो भी हट जाता है और करता है पर नहीं रीसायकल बिन में फ़ाइलों को स्थानांतरित। एहसास करने के लिए एक और बात यह है कि आपके हार्ड डिस्क ड्राइव से आपके USB डिस्क की तरह फाइलसिस्टम में एक फाइल को स्थानांतरित करना वास्तव में 1 है) फ़ाइल डेटा की एक प्रति 2 के बाद) मूल फ़ाइल को अनलिंक कर रहा है। आप नहीं चाहेंगे कि आपका कचरा इन अतिरिक्त प्रतियों से भरा हो।


4
स्पष्ट स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। मुझे सीएलआई का उपयोग करने में कोई आपत्ति नहीं है, मुझे केवल वाइल्डकार्ड का उपयोग करते समय थोड़ा अधिक सावधान रहने की आवश्यकता है। :)
बोहज

16
मैं libtrashrm के व्यवहार को बदलने के लिए कुछ का उपयोग करने के साथ सतर्क हो जाएगा । स्क्रिप्ट के बहुत सारे rmफ़ाइलों को साफ करने के लिए उपयोग करते हैं और आप उन लोगों को ट्रैश में नहीं दिखाना चाहते हैं। मैं पैकेज trashसे समर्पित कमांड का उपयोग करने की सलाह देता हूं trash-cli। @pedro मुझे यह जोड़ना चाहिए कि मैंने एक बार अपने घर निर्देशिका में एक फ़ाइल बनाई थी। मैंने गलती से * उद्धृत कर लिया था जब मुझे इसे बनाना नहीं चाहिए था, इसलिए मैंने इसे rm * नैटली के साथ हटाने का फैसला किया। जब मुझे एहसास हुआ कि मैंने जो कुछ किया है, उसने कमांड को जल्दी से मार दिया, लेकिन इसने मेरे होम डायरेक्टरी में कई फाइलें पहले ही डिलीट कर दी थीं।
पेंग्विन 359

4
शेल में कचरा जैसा कुछ होना बहुत दुर्लभ है, इसलिए यदि आप इसे स्थानीय मशीन पर जोड़ते हैं और इसकी आदत डाल लेते हैं या यहां तक ​​कि अपने दैनिक कार्य में इस पर निर्भर रहते हैं। यूनिक्स के अन्य 99% में से कुछ का उपयोग करते समय आप मुसीबत में पड़ सकते हैं: एक के बिना ...
जोहान

3
मुझे लगता है कि यहां घर-घर संदेश यह है कि मुझे घण्टों में CLI'ing को रोकने और बेहतर ध्यान देने की आवश्यकता है।
बोहज

2
@ जोहान ने जो कहा, उसी तरह की लाइनों के साथ, RedHat ने रूट के रूप में और cp, और mv, cp -iऔर mv -iजब भी चल रहा है , के लिए उपनाम सेट किया (अभी भी करता है?) । यह डिफ़ॉल्ट व्यवहार को बदल देता है, इसलिए मौजूदा फ़ाइलों को अधिलेखित करने से पहले वे कमांड हमेशा पूछेंगे। कुछ sysadmins ने विशेष रूप से उन उपनामों को हटाने की सिफारिश की है ताकि आप उस व्यवहार की उम्मीद न करें जो किसी अन्य सिस्टम पर डिफ़ॉल्ट व्यवहार का पालन करते समय घातक हो सकता है।
पेंग्विन 359

11

Ext3 / ext4 के लिए, आप extundelete या ext3grep जैसे उपकरणों का उपयोग करके फ़ाइलों को पुनर्प्राप्त करने का प्रयास कर सकते हैं , या यहां तक ​​कि मैन्युअल रूप से निम्न-स्तरीय संरचनाओं के साथ गड़बड़ कर सकते हैं (दिल की बेहोशी के लिए नहीं); कई फाइल सिस्टम के लिए, आप कुछ पैटर्न के द्वारा अभी तक ओवरराइट किए गए ब्लॉक को खोजने की कोशिश कर सकते हैं (जैसे मैजिक्रेस्क्यू जेपीईजी हेडर के लिए खोज कर सकते हैं, अन्य बातों के अलावा)। ध्यान दें कि ये पीछे छोड़ी गई मेटाडेटा से फ़ाइलों को पुनर्प्राप्त करने के लिए heuristics का उपयोग कर रहे हैं, इसलिए पूर्ण पुनर्प्राप्ति की गारंटी नहीं है - यह एक अंतिम-मौका शर्त के रूप में अधिक है (जैसा कि उन लोगों की आवश्यकता है कि फ़ाइलों के कुछ निशान जर्नल में रहते हैं, और ब्लॉक अभी तक ओवरराइट नहीं किया गया था)।

इसलिए, सभी इरादों और उद्देश्यों के लिए, के साथ हटाए rmगए फ़ाइलों को हटा दिया गया है - आप इन उपकरणों की पेशकश के रूप में इस तरह की परिश्रम की कोशिश कर सकते हैं, लेकिन इस पर निर्भर नहीं करते हैं: ये सब कुछ विफल होने पर प्रयास करने के लिए उपकरण हैं। बेहतर अपने नवीनतम बैकअप को खोदें (आप बैकअप बना रहे हैं, ठीक है? अरे ठीक है, जियो और सीखो ...)।


2
उच्च-मूल्य वाले पाठ डेटा के लिए, आप हमेशा किसी भी सामान्य सामान्य-प्रयोजन उपकरण (यहां तक ​​कि ईमेक या पर्ल) का उपयोग उस डिस्क के लिए "कच्चे डिवाइस" को देखने के लिए कर सकते हैं जिसमें हटाए गए फ़ाइल शामिल थे, और ज्ञात तारों की खोज करें; मैंने इस तरह से लोगों के लिए वर्ड डॉक्यूमेंट बरामद किए हैं; वे मार्क-अप खो देते हैं, लेकिन अधिकांश पाठ को पुनर्प्राप्त कर सकते हैं। जाहिर है कि यह आपदा वसूली है, न कि "पूर्ववत करें"।
एलेक्सिस

एक उचित 'मैन्युअल' लिंक: web.archive.org/web/20131221183925/http://…
22

8

इसके प्रभावों को पूर्ववत करने के संबंध में rm:

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

यह मानता है कि आपके पास देखने के लिए कुछ अद्वितीय है, जो आपके पास rootसिस्टम पर है और मैं अनुमान लगा रहा हूं कि एक साथ कुछ भी जो एक से अधिक फाइल सिस्टम ब्लॉक तक फैला हुआ है (शायद 4k) काफी श्रमसाध्य हो सकता है यदि फाइल सिस्टम प्रबंधन नहीं करता है फ़ाइल को गैरकानूनी ब्लॉक में रखना।

मैंने डिवाइस पर फ़ाइल सिस्टम पर स्ट्रिंग्स चलाकर सादे-पाठ फ़ाइलों के एक जोड़े की सामग्री को सफलतापूर्वक पुनर्प्राप्त किया है, और grepएक बड़े संदर्भ ( -C) के साथ उन फ़ाइलों से कुछ की तलाश कर रहा है । (और उस घटना के तुरंत बाद, कंपनी ने बैकअप लागू करने पर कुछ संसाधन खर्च करने का फैसला किया)


यह थोड़ा अधिक जटिल है जैसे कि एक्स 3 द्वारा इनोड में ब्लॉक पॉइंटर्स को शून्य करना, लेकिन हां, फाइलों की तलाश सीधे काम कर सकती है - यदि वे पर्याप्त रूप से छोटे हैं या एक सन्निहित ब्लॉक में आवंटित किए गए हैं। इसे कभी-कभी फ़ाइल नक्काशी कहा जाता है और ऐसे उपकरण होते हैं जो magicrescueअपने विशिष्ट पैटर्न द्वारा छवियों या ध्वनियों को खोजने की कोशिश करते हैं।
पिस्कावोर

6

जब भी आप rmकमांड का उपयोग करके किसी फ़ाइल को हटाते हैं , तो फ़ाइल का डेटा कभी नहीं हटाया जाता है। दूसरे शब्दों में फ़ाइल सिस्टम में डेटा युक्त ब्लॉक अभी भी है।

जब आप rmकमांड चलाते हैं तो क्या होता है , सिस्टम उस फाइल से संबंधित इनोड को अप्रयुक्त के रूप में चिह्नित करता है और उस फाइल के डेटा ब्लॉक भी अप्रयुक्त के रूप में (लेकिन मिटा नहीं गया)। हालाँकि ext3, जब कोई फ़ाइल हटा दी जाती है, तो अधिकांश फ़ील्ड को इनोड में शून्य कर दिया जाता है।

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

अधिक जानकारी: इनोड संरचना , फ़ाइल विलोपन कैसे काम करता है


... जब तक कि फ़ाइल को स्पष्ट रूप से chattr +s("श्रेड") विशेषता के साथ चिह्नित नहीं किया जाता है । यह फाइलसिस्टम को विशेष रूप से इस फाइल को डिलीट करने पर जीरो के साथ ओवरराइट करने को कहता है। केवल कुछ फाइल सिस्टम उस विशेषता का समर्थन करेंगे।
टेल्कोएम

3

यूनिक्स-शैली के फाइल सिस्टम (लिनक्स पर सहित) में, फाइलें वास्तव में "किसी विशेष स्थान पर" नहीं हैं। इसके बजाय, सिस्टम हार्डलिंक का उपयोग डेटा के एक बड़े ब्लूब को कितनी मात्रा में करने के लिए करता है। इसलिए जब आप एक फ़ाइल बनाते हैं, तो आप इसकी पहली हार्डलिंक भी बनाते हैं: वह जो वास्तव में उस जगह पर रहता है जहां आपने फ़ाइल को "सेव" किया है। यदि आप अधिक हार्डलिंक बनाते हैं, तो जहां तक ​​सिस्टम को पता है, फाइल वास्तव में एक साथ कई स्थानों पर मौजूद है।

जब आप किसी फाइल को "डिलीट" करते हैं, तो आमतौर पर आप वास्तव में केवल उस हार्डलिंक को हटा रहे होते हैं जो आपके द्वारा निर्दिष्ट स्थान पर मौजूद है। यही कारण है कि फ़ाइलों को हटाने के लिए सिस्टम कॉल कहा जाता है unlink()। सिस्टम वास्तव में फ़ाइल को तब तक नहीं हटाएगा, जब तक कि उसमें कोई हार्डलिंक न बचे। लेकिन एक बार जब अंतिम हार्डलिंक नष्ट हो जाता है, तो यह डेटा है।

तो, आप जाने वाली फ़ाइलें कहाँ जाती हैं? यदि अभी भी हार्डलिंक हैं, तो वे फ़ाइलें हैं जहाँ भी हार्डलिंक आपने नहीं हटाई हैं। यदि कोई हार्डलिंक नहीं बची हैं, तो फाइलें चली गई हैं।


0

यदि फ़ाइल हाल ही में निकाली गई थी तो ~ / .snapshot में भी देखें।


4
यह तभी काम करेगा जब आपके पास कुछ मैजिक फाइलसिस्टम हो जो उस सुविधा को प्रदान करता हो (जैसे नेटऐप) या यदि आप आरएम के विशेष संस्करण का उपयोग कर रहे हैं।
मैट्रम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.