यदि आप ext3 फ़ाइल सिस्टम का उपयोग कर रहे हैं तो कार्लो वुड के HOWTO का अनुसरण करें
कुछ शब्दों में,
- Ext3grep $ IMAGE --ls --inode 2 का उपयोग करें | grep your_file को खोजने के लिए फ़ाइल u की तलाश कर रहे हैं (जहाँ $ IMAGE उर विभाजन है उदाहरण के लिए / dev / sda3)
- उस फ़ाइल सिस्टम ब्लॉक को ढूंढें जिसमें अनलॉकेटेड स्पेस की पत्रिका है।
- सभी जर्नल डिस्क्रिप्टर ब्लॉक देखें जो पहले पाए गए थे।
- डीडी के साथ ब्लॉक कॉपी करें।
- अनुगामी शून्य को हटाने के लिए फ़ाइल को संपादित करें।
- फ़ाइल को बिल्ली जहाँ भी आप चाहते हैं
स्रोत से:
"अध्याय मैनुअल रिकवरी उदाहरण
निम्नलिखित उदाहरण में हम मैन्युअल रूप से एक छोटी फ़ाइल पुनर्प्राप्त करेंगे। अंतरिक्ष को बचाने और उदाहरण को अधिक पठनीय बनाने के लिए केवल आंशिक आउटपुट दिया जाता है।
Ext3grep $ IMAGE --ls --inode का उपयोग करके हम उस फ़ाइल का नाम पाते हैं जिसे हम पुनर्प्राप्त करना चाहते हैं:
$ ext3grep $ IMAGE --ls --inode 2 | grep कार्लो 3 एंड डी 195457 D 1202352103 Thu 7 फरवरी 03:41:43 2008 drwxr-xr-x कार्लो
$ ext3grep $ IMAGE --ls --inode 195457 | grep 'बिन $' | हेड -n 1 34 35 d 309540 D 1202352104 Thu 7 फरवरी 03:41:44 2008 drwxr-xr-x bin
$ ext3grep $ IMAGE --ls - 309540 | grep start_azureus 9 10 r 309631 D 1202351093 Thu Feb 7 03:24:53 2008 rrwxr-xr-x start_azureus
जाहिर है, इनोड 309631 मिटा दिया गया है और हमारे पास इस फाइल के लिए कोई ब्लॉक संख्या नहीं है:
$ ext3grep $ IMAGE --print --inode 309631 [...] इनोड असंबद्ध समूह है: 19 जनरेशन Id: 2771183319 uid / gid: 1000/1000 मोड: rrwxr-xr-x आकार: 0 संख्याओं की संख्या: 0 क्षेत्र: 0 क्षेत्र: 0 (-> 0 अप्रत्यक्ष ब्लॉक)।
इनोड टाइम्स: एक्सेस: 1202350961 = थू फ़रवरी 7 03:22:41 2008 फ़ाइल संशोधित: 1202351093 = थू फ़रवरी 7 03:24:53 2008 इनोड संशोधित: 1202351093 = थू फ़रवरी 7 03:22:53 2008 विचलन समय: 1202351093 = थू फ़रवरी 7 03:24:53 2008
प्रत्यक्ष ब्लॉक:
इसलिए, हम जर्नल में इसकी एक पुरानी प्रति देखने का प्रयास करेंगे। सबसे पहले, हम फाइल सिस्टम ब्लॉक को खोजते हैं जिसमें यह इनोड है:
$ ext3grep $ IMAGE --in-to-block 309631 | grep इनकोड 309631 रहता है, ऑफसेट 0xf00 पर ब्लॉक 622598 में रहता है।
तब हम सभी पत्रकारों को संदर्भित करते हैं कि खंड 622598 को संदर्भित करते हैं:
$ ext3grep $ IMAGE --journal --block 622598 [...] जर्नल डिस्क्रिप्टर रेफरेंसिंग ब्लॉक 622598: 4381294 26582 4381311 28693 4381313 28809 438133 28814 4381321 29308 4381348 30384 30388 30388148388388388388383186383188 4382137 6672 4382138 7536 4382139 7984 4382140 8931
इसका मतलब यह है कि अनुक्रम संख्या 4381294 के साथ लेनदेन में ब्लॉक 26582 में ब्लॉक 622598 की एक प्रति है, और इसी तरह। सबसे बड़ी अनुक्रम संख्या, तल पर, डिस्क पर लिखा गया अंतिम डेटा होना चाहिए और इस प्रकार 8931 वर्तमान ब्लॉक 622598 के समान होना चाहिए। अंतिम गैर-हटाए गए प्रतिलिपि को खोजने के लिए, सबसे नीचे शुरू करना चाहिए और काम करना चाहिए ऊपर की ओर।
यदि आप इस तरह के ब्लॉक को प्रिंट करने की कोशिश करते हैं, तो ext3grep यह पहचानता है कि यह एक इनकोड टेबल से ब्लॉक है और इसमें सभी 32 इनोइड्स की सामग्री को प्रिंट करेगा। हम केवल ३० ९ ६३१ को देखना चाहते हैं; इसलिए हम एक स्मार्ट grep का उपयोग करते हैं:
$ ext3grep $ IMAGE - छाप - 8931 | grep -15 'इनोड 309631' -------------- इनोड 309631 ----------------------- जनरेशन आईडी: 2771183319 uid / gid: 1000/1000 मोड: rrwxr-xr-x आकार: 0 अंकों की संख्या: 0 सेक्टर: 0 (-> 0 अप्रत्यक्ष ब्लॉक)।
इनोड टाइम्स: एक्सेस: 1202350961 = थू फ़रवरी 7 03:22:41 2008 फ़ाइल संशोधित: 1202351093 = थू फ़रवरी 7 03:24:53 2008 इनोड संशोधित: 1202351093 = थू फ़रवरी 7 03:22:53 2008 विचलन समय: 1202351093 = थू फ़रवरी 7 03:24:53 2008
प्रत्यक्ष ब्लॉक:
यह वास्तव में वैसा ही है जैसा हमने ब्लॉक 622598 में देखा था। आगे हम छोटे अनुक्रम संख्या देखते हैं जब तक कि हम एक 0 विलोपन समय के साथ एक नहीं पाते। पहला जो हम पाते हैं (नीचे ऊपर) ब्लॉक 6073 है:
$ ext3grep $ IMAGE - छाप - 6073 | grep -15 'इनोड 309631' -------------- इनोड 309631 ----------------------- जनरेशन आईडी: 2771183319 uid / gid: 1000/1000 मोड: rrwxr-xr-x आकार: 40 अंकों की लिंक: 1 सेक्टर: 8 (-> 0 अप्रत्यक्ष ब्लॉक)।
इनोड टाइम्स: एक्सेस किया गया: १२०२३५० ९ ६१ = थू 22 फरवरी 41:२२:४१ २०० Mod फाइल संशोधित: ११ = ९ ६ Th६u६ ९ २ = थू १३ १५:०४:५२ २०० In इनोद संशोधित
डायरेक्ट ब्लॉक: 645627
ऊपर स्वचालित है और कमांड लाइन विकल्प - शॉ-जर्नल-इनोड्स के साथ बहुत तेजी से किया जा सकता है। यह विकल्प उस ब्लॉक को खोजेगा जो इनोड के अंतर्गत आता है, फिर उस ब्लॉक की सभी प्रतियों को जर्नल में पाता है, और बाद में इनमें से प्रत्येक ब्लॉक से केवल अनुरोधित इनकोड प्रिंट करता है (जिनमें से प्रत्येक में 32 इनोड होते हैं, जैसा कि आप जानते हैं), डुप्लिकेट को समाप्त करना :
$ ext3grep $ IMAGE --show-journal-inodes 309631 समूह की संख्या: 75 न्यूनतम / अधिकतम जर्नल ब्लॉक: 1115/35026 जर्नल डिस्क्रिप्टर लोड हो रहा है ... जर्नल लेन-देन 4381435 के आसपास लपेटता है, कुछ डेटा ब्लॉक इस लेनदेन के खो सकते हैं। पत्रिका में विवरणकों की संख्या: 30258; न्यूनतम / अधिकतम अनुक्रम संख्या: 4379495/4382264 पत्रिका में इनोड 309631 की प्रतियां:
-------------- आयोड ३० ९ ६३१ ----------------------- जनरेशन आईडी: २88११19३३१ ९ यूआईडी / gid: १००० / १००० मोड: rrwxr-xr-x आकार: 0 अंकों की संख्या: 0 सेक्टर: 0 (-> 0 अप्रत्यक्ष ब्लॉक)।
इनोड टाइम्स: एक्सेस: 1202350961 = थू फ़रवरी 7 03:22:41 2008 फ़ाइल संशोधित: 1202351093 = थू फ़रवरी 7 03:24:53 2008 इनोड संशोधित: 1202351093 = थू फ़रवरी 7 03:22:53 2008 विचलन समय: 1202351093 = थू फ़रवरी 7 03:24:53 2008
प्रत्यक्ष ब्लॉक:
-------------- आयोड ३० ९ ६३१ ----------------------- जनरेशन आईडी: २88११19३३१ ९ यूआईडी / gid: १००० / १००० मोड: rrwxr-xr-x आकार: 40 अंकों की लिंक: 1 सेक्टर: 8 (-> 0 अप्रत्यक्ष ब्लॉक)।
इनोड टाइम्स: एक्सेस किया गया: १२०२३५० ९ ६१ = थू 22 फरवरी 41:२२:४१ २०० Mod फाइल संशोधित: ११ = ९ ६ Th६u६ ९ २ = थू १३ १५:०४:५२ २०० In इनोद संशोधित
डायरेक्ट ब्लॉक: 645627
फ़ाइल वास्तव में छोटी है: केवल एक ब्लॉक। हम इस ब्लॉक को पहले दिखाए गए अनुसार dd के साथ कॉपी करते हैं:
$ dd if = $ IMAGE bs = 4096 count = 1 Skip = 645627 of = block.645627 1 + 0 रिकॉर्ड 1 + 0 में रिकॉर्ड 4096 बाइट्स (4.1 kB) कॉपी किया गया, 0.0166104 सेकंड, 24,000 kB / s
और फिर अनुगामी शून्य को हटाने के लिए फ़ाइल को संपादित करें, या पहले 40 बाइट्स (फ़ाइल के दिए गए आकार) की प्रतिलिपि बनाएँ:
$ dd अगर = block.645627 bs = 1 गिनती = 40 का = start_azureus 40 + 0 रिकॉर्ड में 40 + 0 रिकॉर्ड 40 बाइट्स (40 B) की नकल की, 0.000105397 सेकंड, 380 kB / s
$ बिल्ली start_azureus cd / usr / src / azureus / azureus ./azureus &
बरामद! "