Ext3 dosya sistemi kullanıyorsanız Carlo Wood'un NASIL belgesini izlemeyi deneyin
Birkaç kelimeyle,
- Ext3grep $ IMAGE kullanın --ls --inode 2 | u aradığınız dosyayı bulmak için dosya_grep (burada $ IMAGE örneğin / dev / sda2 için ur bölümüdür)
- Ayrılmamış alan günlüğünü içeren dosya sistemi bloğunu bulun.
- Daha önce bulunan tüm blok tanımlayıcılarına referans bloklarını bulun.
- Bloğu dd ile kopyalayın.
- Sondaki sıfırları silmek için dosyayı düzenleyin.
- İstediğin yerde dosyayı seç
Kaynaktan:
"Manuel kurtarma örneği bölümü
Aşağıdaki örnekte, küçük bir dosyayı manuel olarak kurtaracağız. Yerden tasarruf etmek ve örneği daha okunaklı hale getirmek için sadece kısmi çıktı verilir.
Ext3grep $ IMAGE --ls --inode kullanarak kurtarmak istediğimiz dosyanın adını buluruz:
$ ext3grep $ GÖRÜNTÜ --ls --inode 2 | grep carlo 3 son d 195457 D 1202352103 Per 7 Şub 03:41:43 2008 drwxr-xr-x carlo
$ ext3grep $ GÖRÜNTÜ --ls --inode 195457 | grep 'bin $' | kafa -n 1 34 35 d 309540 D 1202352104 Per 7 Şub 03:41:44 2008 drwxr-xr-x bin
$ ext3grep $ GÖRÜNTÜ --ls --inode 309540 | grep start_azureus 9 10 r 309631 D 1202351093 Per 7 Şub 03:24:53 2008 rrwxr-xr-x start_azureus
Açıkça, inode 309631 silinir ve bu dosya için blok numaralarımız yok:
$ ext3grep $ IMAGE --print --inode 309631 [...] Inode Ayrılmamış Grup: 19 Nesil No: 2771183319 uid / gid: 1000/1000 modu: rrwxr-xr-x boyut: 0 bağlantı sayısı: 0 sektör: 0 (-> 0 dolaylı blok).
Inode Times: Erişim tarihi: 1202350961 = Perş 7 Şub 03:22:41 2008 Dosya Değiştirildi: 1202351093 = Per 7 Şub 03:24:53 2008 Inode Değiştirildi: 1202351093 = Per 7 Şub 03:24:53 2008 Silme süresi: 1202351093 = Per 7 Şubat 03:24:53 2008
Doğrudan Bloklar:
Bu nedenle, dergide daha eski bir kopyasını aramaya çalışacağız. İlk olarak, bu inode'u içeren dosya sistemi bloğunu buluyoruz:
$ ext3grep $ GÖRÜNTÜ --inode-blok 309631 | grep, Inode 309631, 0xf00 göreli konumunda 622598 bloğunda bulunur.
Sonra tüm dergi tanımlayıcılarını 622598 bloğuna referansla buluyoruz:
$ ext3grep $ IMAGE --journal --block 622598 [...] 622598 numaralı bloğa referans veren dergi tanımlayıcıları: 4381294 26582 4381311 28693 4381313 28809 4381314 28814 4381321 29308 4381348 30676 4381349 30986 4381350 31299 4381374 327 438138 438 438 438 438 4382137 6672 4382138 7536 4382139 7984 4382140 8931
Bu, 4381294 sıra numaralı işlemin 26582 bloğunda 622598 bloğunun bir kopyasına sahip olduğu anlamına gelir. En alttaki sıra numarası, diske yazılan son veri olmalı ve bu nedenle blok 8931, geçerli blok 622598 ile aynı olmalıdır. Son silinmemiş kopyayı bulmak için, alttan başlamalı ve çalışmalıdır. yukarı.
Böyle bir bloğu yazdırmaya çalışırsanız, ext3grep bunun bir inode tablosundan bir blok olduğunu fark eder ve içindeki 32 inodun içeriğini yazdırır. Ancak sadece inode 309631'i görmek istiyoruz; bu yüzden akıllı bir grep kullanıyoruz:
$ ext3grep $ GÖRÜNTÜ - baskı - blok 8931 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- Nesil Kimliği: 2771183319 uid / gid: 1000/1000 modu: rrwxr-xr-x boyut: 0 bağlantı sayısı: 0 sektör: 0 (-> 0 dolaylı blok).
Inode Times: Erişim tarihi: 1202350961 = Perş 7 Şub 03:22:41 2008 Dosya Değiştirildi: 1202351093 = Per 7 Şub 03:24:53 2008 Inode Değiştirildi: 1202351093 = Per 7 Şub 03:24:53 2008 Silme süresi: 1202351093 = Per 7 Şubat 03:24:53 2008
Doğrudan Bloklar:
Bu gerçekten de blok 622598'de gördüğümüzle aynıdır. Sonra 0 Silme zamanı olan bir tane bulana kadar daha küçük dizi numaralarına bakarız. İlk bulduğumuz (aşağıdan yukarıya) blok 6073:
$ ext3grep $ GÖRÜNTÜ - baskı - blok 6073 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- Nesil Kimliği: 2771183319 uid / gid: 1000/1000 modu: rrwxr-xr-x boyutu: 40 bağlantı sayısı: 1 sektör: 8 (-> 0 dolaylı blok).
Inode Times: Erişim tarihi: 1202350961 = Perş 7 Şub 03:22:41 2008 Dosya Değiştirildi: 1189688692 = Per 13 Eyl 15:04:52 2007 Inode Değiştirildi: 1189688692 = Per 13 Eyl 15:04:52 2007 Silme süresi: 0
Doğrudan Bloklar: 645627
Yukarıdakiler otomatiktir ve komut satırı seçeneği olan show-journal-inodes ile çok daha hızlı yapılabilir. Bu seçenek, inode ait olduğu bloğu bulur, sonra o bloğun tüm kopyalarını günlükte bulur ve daha sonra bu bloğun her birinden (her biri bildiğiniz gibi 32 inode içeren) yalnızca istenen inode'yu yazdırır ve kopyaları ortadan kaldırır. :
$ ext3grep $ IMAGE --show-journal-inodes 309631 Grup sayısı: 75 Minimum / maksimum günlük bloğu: 1115/35026 Günlük tanımlayıcıları yükleniyor ... bitti Günlük işlem 4381435 tamamlanıyor, bu işlemin bazı veri blokları kaybolmuş olabilir. Dergideki tanımlayıcı sayısı: 30258; min / max dizi numaraları: 4379495/4382264 Dergide bulunan inode 309631'in kopyaları:
-------------- Inode 309631 ----------------------- Nesil Kimliği: 2771183319 uid / gid: 1000/1000 mod: rrwxr-xr-x boyut: 0 bağlantı sayısı: 0 sektör: 0 (-> 0 dolaylı blok).
Inode Times: Erişim tarihi: 1202350961 = Perş 7 Şub 03:22:41 2008 Dosya Değiştirildi: 1202351093 = Per 7 Şub 03:24:53 2008 Inode Değiştirildi: 1202351093 = Per 7 Şub 03:24:53 2008 Silme süresi: 1202351093 = Per 7 Şubat 03:24:53 2008
Doğrudan Bloklar:
-------------- Inode 309631 ----------------------- Nesil Kimliği: 2771183319 uid / gid: 1000/1000 modu: rrwxr-xr-x boyutu: 40 bağlantı sayısı: 1 sektör: 8 (-> 0 dolaylı blok).
Inode Times: Erişim tarihi: 1202350961 = Perş 7 Şub 03:22:41 2008 Dosya Değiştirildi: 1189688692 = Per 13 Eyl 15:04:52 2007 Inode Değiştirildi: 1189688692 = Per 13 Eyl 15:04:52 2007 Silme süresi: 0
Doğrudan Bloklar: 645627
Dosya gerçekten küçük: sadece bir blok. Bu bloğu dd ile daha önce gösterildiği gibi kopyalarız:
$ dd = = IMAGE bs = 4096 sayım = 1 atlama = 645627 / = blok.645627 1 + 0'da 1 + 0 kayıt 4096 bayt (4,1 kB) kopyalandı, 0,0166104 saniye, 247 kB / s
ve ardından sıfırları silmek için dosyayı düzenleyin veya ilk 40 baytı (dosyanın belirtilen boyutu) kopyalayın:
$ dd if = block.645627 bs = 1 sayım = = 40 start_azureus 40 + 0 kayıt 40 + 0 kayıt 40 bayt (40 B) kopyalanmış, 0.000105397 saniye, 380 kB / s
$ cat start_azureus cd / usr / src / azureus / azureus ./azureus &
Kurtarılan!"