आमतौर पर जब संपादक फ़ाइलों को सहेजते हैं, तो वे 0 को हटाते हैं या काटते हैं, इस प्रकार आवंटित स्थान को मुक्त करते हैं, और फिर लिखते हैं, जो नई जगह आवंटित करता है। यह फ़ाइल सिस्टम में डेटा को पूरी तरह से अलग भौतिक स्थान पर रखता है। तो आपका विचार काम नहीं कर सकता है।
आप किसी फ़ाइल का भौतिक स्थान प्राप्त कर सकते हैं, filefrag
या hdparm --fibmap
फिर dd
उस भौतिक स्थान को सीधे पढ़ने के लिए उपयोग कर सकते हैं। मैंने इस प्रक्रिया को यहां एक अलग संदर्भ में वर्णित किया है: /unix//a/85880/30851
आपके मामले में यह अधिक संभावना है कि आपको पाठ्य डेटा खोजने के लिए सामान्य दृष्टिकोण की आवश्यकता है ... कुछ इस तरह:
strings -n 12 -t d /dev/partition | grep -F 'text snippet'
strings
लगातार ASCII डेटा की तलाश करेंगे (कुछ अन्य एनकोडिंग का भी समर्थन करता है, UTF-8 के बारे में निश्चित नहीं। यदि यह कोड या अंग्रेजी है तो आपको इसकी आवश्यकता नहीं होगी) और यह उन ऑफसेट को भी प्रिंट करेगा जहां यह पाया गया था।
text snippet
एक सटीक, अद्वितीय पाठ नमूना होना चाहिए जिसे आप उस फ़ाइल के हिस्से में याद रखते हैं जिसे आप [एक पंक्ति में] देख रहे हैं। (यदि आप इसे ठीक से नहीं जानते हैं, तो आप इसके बजाय नियमित अभिव्यक्ति के साथ मिल सकते हैं।)
-n 12
न्यूनतम लंबाई है जो खोजेगी strings
। 12
आपकी लंबाई होनी चाहिए text snippet
। यह पैरामीटर वैकल्पिक है, बशर्ते यह strings | grep
थोड़ा तेज़ जाने में मदद करे ।
पूरे विभाजन को पढ़ने में लंबा समय लगेगा, लेकिन यदि सफल रहा, तो आपके पास एक ऑफसेट होगा जिसे आप dd
सामान्य क्षेत्र को हथियाने के लिए फीड कर सकते हैं और फिर उस सामान को हटा सकते हैं जो संबंधित नहीं है।
मैंने उस निर्देशिका में कुछ भी नहीं किया है
यदि आपकी निर्देशिका माउंटपॉइंट होने के लिए नहीं होती है ... तो अधिकांश फाइल सिस्टम वास्तव में "प्रति निर्देशिका" स्थान को आरक्षित नहीं करता है ... पूरे फाइलसिस्टम में कोई भी और सभी लिखता है उस बिट को अधिलेखित कर सकता है जिसे आप खोज रहे हैं। डेटा रिकवरी स्थिति में, आप आमतौर पर पूरी चीज़ को केवल-पढ़ने के लिए मोड में स्विच करते हैं।
strings
केवल फ़ाइल के कुछ हिस्सों का पता लगाएं, जब तक आप बेहद भाग्यशाली न हों।