आमतौर पर जब संपादक फ़ाइलों को सहेजते हैं, तो वे 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केवल फ़ाइल के कुछ हिस्सों का पता लगाएं, जब तक आप बेहद भाग्यशाली न हों।