Nếu bạn đang sử dụng hệ thống tệp ext3, hãy thử theo dõi HOWTO của Carlo Wood
Trong vài từ
- Sử dụng ext3grep $ IMAGE --ls --inode 2 | grep your_file để tìm tệp bạn đang tìm (trong đó $ IMAGE là phân vùng của bạn, ví dụ / dev / sda2)
- Tìm khối hệ thống tệp chứa tạp chí của không gian chưa phân bổ.
- Tìm tất cả các khối mô tả tạp chí đã được tìm thấy trước đây.
- Sao chép khối bằng dd.
- Chỉnh sửa tập tin để xóa các số 0 ở cuối.
- cat tập tin bất cứ nơi nào bạn muốn
Từ nguồn:
"Ví dụ phục hồi chương thủ công
Trong ví dụ sau, chúng tôi sẽ tự phục hồi một tệp nhỏ. Chỉ có đầu ra một phần được đưa ra để tiết kiệm không gian và làm cho ví dụ dễ đọc hơn.
Sử dụng ext3grep $ IMAGE --ls --inode, chúng tôi tìm thấy tên của tệp mà chúng tôi muốn khôi phục:
$ ext3grep $ IMAGE --ls --inode 2 | grep carlo 3 end d 195456 D 1202352103 Thu ngày 7 tháng 2 03:41:43 2008 drwxr-xr-x carlo
$ ext3grep $ IMAGE --ls --inode 195456 | grep 'bin $' | đầu -n 1 34 35 d 309540 D 1202352104 Thu ngày 7 tháng 2 03:41:44 2008 drwxr-xr-x bin
$ ext3grep $ IMAGE --ls --inode 309540 | grep start_azureus 9 10 r 309631 D 1202351093 Thu ngày 7 tháng 2 03:24:53 2008 rrwxr-xr-x start_azureus
Rõ ràng, inode 309631 bị xóa và chúng tôi không có số khối cho tệp này:
$ ext3grep $ IMAGE --print --inode 309631 [...] Inode là Unallocated Nhóm: 19 Thế hệ Id: 2771183319 uid / gid: 1000/1000 chế độ: rrwxr-xr-x size: 0 num liên kết: 0 sector: 0 (-> 0 khối gián tiếp).
Inode Times: Truy cập: 1202350961 = Thu ngày 7 tháng 2 03:22:41 2008 Tập tin đã sửa đổi: 1202351093 = Thu ngày 7 tháng 2 03:24:53 2008 Inode Đã sửa đổi: 1202351093 = Thu ngày 7 tháng 2 03:24:53 2008 Thời gian xóa: 1202351093 = Thu Ngày 7 tháng 2 03:24:53 2008
Khối trực tiếp:
Do đó, chúng tôi sẽ cố gắng tìm kiếm một bản sao cũ hơn của nó trong tạp chí. Đầu tiên, chúng tôi tìm thấy khối hệ thống tệp có chứa nút này:
$ ext3grep $ IMAGE --inode-to-block 309631 | grep cư trú Inode 309631 nằm trong khối 622598 tại offset 0xf00.
Sau đó, chúng tôi tìm thấy tất cả các mô tả tạp chí tham chiếu khối 622598:
$ ext3grep $ NGAY 4382137 6672 4382138 7536 4382139 7984 4382140 8931
Điều này có nghĩa là giao dịch với số thứ tự 4381294 có một bản sao của khối 622598 trong khối 26582, v.v. Số thứ tự lớn nhất, ở dưới cùng, phải là dữ liệu cuối cùng được ghi vào đĩa và do đó, khối 8931 phải giống với khối hiện tại 622598. Để tìm bản sao không bị xóa cuối cùng, người ta phải bắt đầu ở dưới cùng và làm việc trở lên
Nếu bạn cố in một khối như vậy, ext3grep nhận ra rằng đó là một khối từ bảng inode và sẽ in nội dung của tất cả 32 nút trong đó. Tuy nhiên, chúng tôi chỉ muốn thấy inode 309631; vì vậy chúng tôi sử dụng một grep thông minh:
$ ext3grep $ IMAGE --print --block 8931 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- Id thế hệ: 2771183319 uid / gid: chế độ 1000/1000: rrwxr-xr-x size: 0 num liên kết: 0 sector: 0 (-> 0 khối gián tiếp).
Inode Times: Truy cập: 1202350961 = Thu ngày 7 tháng 2 03:22:41 2008 Tập tin đã sửa đổi: 1202351093 = Thu ngày 7 tháng 2 03:24:53 2008 Inode Đã sửa đổi: 1202351093 = Thu ngày 7 tháng 2 03:24:53 2008 Thời gian xóa: 1202351093 = Thu Ngày 7 tháng 2 03:24:53 2008
Khối trực tiếp:
Điều này thực sự giống như chúng ta đã thấy trong khối 622598. Tiếp theo chúng ta xem xét các số thứ tự nhỏ hơn cho đến khi chúng ta tìm thấy một số có thời gian Xóa 0. Cái đầu tiên mà chúng ta tìm thấy (từ dưới lên) là khối 6073:
$ ext3grep $ IMAGE --print --block 6073 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- Id thế hệ: 2771183319 uid / gid: chế độ 1000/1000: rrwxr-xr-x size: 40 num liên kết: 1 sector: 8 (-> 0 khối gián tiếp).
Inode Times: Truy cập: 1202350961 = Thu ngày 7 tháng 2 03:22:41 2008 Tập tin đã sửa đổi: 1189688692 = Thu ngày 13 tháng 9 15:04:51 2007 Inode Đã sửa đổi: 1189688692 = Thu ngày 13 tháng 9 15:04:51 2007 Thời gian xóa: 0
Khối trực tiếp: 645627
Ở trên là tự động và có thể được thực hiện nhanh hơn nhiều với tùy chọn dòng lệnh --show-tạp chí-inodes. Tùy chọn này sẽ tìm thấy khối mà inode thuộc về, sau đó tìm tất cả các bản sao của khối đó trong tạp chí và sau đó chỉ in các nút được yêu cầu từ mỗi khối này (mỗi khối chứa 32 nút, như bạn biết), loại bỏ các bản sao :
$ ext3grep $ IMAGE --show-Tạp chí-inodes 309631 Số lượng nhóm: 75 Khối nhật ký tối thiểu / tối đa: 1115/35026 Đang tải mô tả tạp chí ... đã thực hiện giao dịch Tạp chí 4381435, một số khối dữ liệu có thể bị mất trong giao dịch này. Số lượng mô tả trong tạp chí: 30258; Số thứ tự tối thiểu / tối đa: 4379495/4332264 Bản sao của inode 309631 được tìm thấy trong tạp chí:
-------------- Inode 309631 ----------------------- Id thế hệ: 2771183319 uid / gid: 1000/1000 chế độ: rrwxr-xr-x size: 0 num liên kết: 0 sector: 0 (-> 0 khối gián tiếp).
Inode Times: Truy cập: 1202350961 = Thu ngày 7 tháng 2 03:22:41 2008 Tập tin đã sửa đổi: 1202351093 = Thu ngày 7 tháng 2 03:24:53 2008 Inode Đã sửa đổi: 1202351093 = Thu ngày 7 tháng 2 03:24:53 2008 Thời gian xóa: 1202351093 = Thu Ngày 7 tháng 2 03:24:53 2008
Khối trực tiếp:
-------------- Inode 309631 ----------------------- Id thế hệ: 2771183319 uid / gid: 1000/1000 chế độ: rrwxr-xr-x size: 40 num liên kết: 1 sector: 8 (-> 0 khối gián tiếp).
Inode Times: Truy cập: 1202350961 = Thu ngày 7 tháng 2 03:22:41 2008 Tập tin đã sửa đổi: 1189688692 = Thu ngày 13 tháng 9 15:04:51 2007 Inode Đã sửa đổi: 1189688692 = Thu ngày 13 tháng 9 15:04:51 2007 Thời gian xóa: 0
Khối trực tiếp: 645627
Các tập tin thực sự nhỏ: chỉ có một khối. Chúng tôi sao chép khối này với dd như hình trước:
$ dd if = $ IMAGE bs = 4096 đếm = 1 Skip = 645627 of = block.645627 bản ghi 1 + 0 trong 1 + 0 bản ghi ra 4096 byte (4,1 kB) được sao chép, 0,0166104 giây, 247 kB / s
và sau đó chỉnh sửa tệp để xóa các số 0 ở cuối hoặc sao chép 40 byte đầu tiên (kích thước đã cho của tệp):
$ dd if = block.645627 bs = 1 Count = 40 of = start_azureus 40 + 0 bản ghi trong 40 + 0 bản ghi trong 40 byte (40 B) được sao chép, 0,000105394 giây, 380 kB / s
$ cat start_azureus cd / usr / src / azureus / azureus ./azureus &
Đã phục hồi! "