Skip to content


Odzyskanie skasowanych plików

Ten post pokazuje jak można odzyskać wymazany plik na maszynie z AIXem. Wymazałem plik nazywający się “group”, który następnie będę się starał odzyskać.

MarcoPolo:/>cd /acl/d*
MarcoPolo:/acl/duszyk>ls
group hosts inittab
MarcoPolo:/acl/duszyk>ls -i
8 group 7 inittab
6 hosts
MarcoPolo:/acl/duszyk>rm group

Polecenie do modyfikacji folderów nazywa się fsdb. Folder, który będziemy modyfikować należy zdemontować:

MarcoPolo:/acl/duszyk>cd /
MarcoPolo:/>umount /acl

Po wydaniu tego plecenia, należy przenieść się do początku foldera wydając komendę i 2, – początek każdego foldera określony jest przy pomocy inode 2.

MarcoPolo:/>fsdb /dev/acl_lv

File System: /dev/acl_lv

File System Size: 648784 (512 byte blocks)
Aggregate Block Size: 4096
Allocation Group Size: 8192 (aggregate blocks)

> i 2
Inode 2 at block 35, offset 0x400:

[1] di_fileset: 16 [17] di_inostamp: 0x4a8a9e19
[2] di_number: 2 [18] di_gen: 1
[3] di_size: 0x0000000000000100 [19] di_ixpxd.len: 4
[4] di_nblocks: 0x0000000000000000 [20] di_ixpxd.addr1: 0x00
[5] di_nlink: 4 [21] di_ixpxd.addr2: 0x00000023
[6] di_mode: 0x000141ed di_ixpxd.address: 35
0040755 drwxr-xr-x [23] di_uid: 0
[24] di_gid: 0
[9] di_atime.tj_nsec: 0x0df794c4 [25] di_atime.tj_sec:0x000000004a8d736b
[10] di_ctime.tj_nsec: 0x0cc6668e [26] di_ctime.tj_sec:0x000000004a8d6e35
[11] di_mtime.tj_nsec: 0x0cc6668e [27] di_mtime.tj_sec:0x000000004a8d6e35
[12] di_otime.tj_nsec: 0x00000000 [28] di_otime.tj_sec:0x000000004a8a9e19
[13] di_eaRoot.eaFlag: 0x01 [29] di_eaRoot.eaDirectory: 0
EAv2 [30] di_eaRoot.eaMode:0x0000000000000000
[15] di_eaRoot.eaACL: 0
[16] di_eaRoot.aclOwner: 0 [32] di_eaRoot.aclTyp:0x0000000000000000
change_inode: [m]odify, [e]a, ac[l], [t]ree, or e[x]it > x

Po przemieszczeniu się do początku foldera, wyświetlmy jego zawartość przy pomocy komendy dir 2. Zwróć uwagę, że dyrektory z której wymazałem plik nazywa się duszyk a jej inode to 4.

> dir 2
idotdot = 2


4 duszyk
3 lost+found

Zmienimy swoje położenie przy pomocy komendy i 4

> i 4

Zauważ, że zawartości tej inode, zaczyna się od block 35

Inode 4 at block 35, offset 0x800:


[1] di_fileset: 16 [17] di_inostamp: 0x4a8a9e19
[2] di_number: 4 [18] di_gen: 1848434882
[3] di_size: 0x0000000000000100 [19] di_ixpxd.len: 4
[4] di_nblocks: 0x0000000000000000 [20] di_ixpxd.addr1: 0x00
[5] di_nlink: 2 [21] di_ixpxd.addr2: 0x00000023
[6] di_mode: 0x000141ed di_ixpxd.address: 35
0040755 drwxr-xr-x [23] di_uid: 0
[24] di_gid: 0
[9] di_atime.tj_nsec: 0x2bc4f872 [25] di_atime.tj_sec:0x000000004a8d7371
[10] di_ctime.tj_nsec: 0x21da98c8 [26] di_ctime.tj_sec:0x000000004a8d7379
[11] di_mtime.tj_nsec: 0x21da98c8 [27] di_mtime.tj_sec:0x000000004a8d7379
[12] di_otime.tj_nsec: 0x0cc6668e [28] di_otime.tj_sec:0x000000004a8d6e35
[13] di_eaRoot.eaFlag: 0x01 [29] di_eaRoot.eaDirectory: 0
EAv2 [30] di_eaRoot.eaMode:0x0000000000000000
[15] di_eaRoot.eaACL: 0
[16] di_eaRoot.aclOwner: 0 [32] di_eaRoot.aclTyp:0x0000000000000000
change_inode: [m]odify, [e]a, ac[l], [t]ree, or e[x]it > x

Wyświetl zawartość tej dyrektory (szukaj nazwy wymazanego pliku w ostatniej kolumnie każdej linii tekstu), często będziesz musiał nacisnąć ENTER wiele razy zanim dotrzesz do odpowiedniego miejsca :

> display 35 a
Block: 35 Real Address 0x23000
0000000a: 00010000 00104A8A 9E190000 00000000 |......J.........|
0000001a: 04000000 00230000 00000000 00000000 |.....#..........|
0000002a: 00000000 00000000 00000000 00000000 |................|
0000003a: 00010001 80000000 00004A8A 9E190000 |..........J.....|
0000004a: 00000000 00000000 00004A8A 9E190000 |..........J.....|
0000005a: 00000000 00000000 00004A8A 9E190000 |..........J.....|
0000006a: 00000000 00000000 00004A8A 9E190000 |..........J.....|
0000007a: 00000000 00000100 00000000 00000000 |................|
0000008a: 00000000 00000000 00000000 00000000 |................|
0000009a: 00000000 00000000 00000000 00000000 |................|
000000aa: 00000000 00000000 00000000 00000000 |................|
000000ba: 00000000 00000000 00000000 00000000 |................|
000000ca: 00000000 00000000 00000000 00000000 |................|
000000da: 00000000 00000000 00000000 00000000 |................|
000000ea: 00000000 00008300 00020012 00000000 |................|
000000fa: 00000000 00000000 00000000 00000000 |................|
-hit enter for more-
….....
….....
….....
000001fa: 00000000 00000000 00000000 00010000 |................|
-hit enter for more-
…......
000004fa: 01010100 00000000 00000000 0003FF0A |................|
-hit enter for more-
0000050a: 6C6F7374 2B666F75 6E640000 00000000 |lost+found......|
0000051a: 00000000 00000301 00000000 0020FF04 |............. ..|
0000052a: 64697231 00000000 00000000 00000000 |dir1............|
0000053a: 00000000 00000601 00000000 0004FF05 |................|
0000054a: 66696C65 31000000 00000000 00000000 |file1...........|
0000055a: 00000000 00000201 00000000 0005FF0B |................|
0000056a: 64697232 696E312E 61636C00 00000000 |dir2in1.acl.....|
0000057a: 00000000 00000000 00000000 0004FF06 |................|
0000058a: 6475737A 796B0000 00000000 00000000 |duszyk..........|
….......
000008ba: 00000000 00000000 00000000 00000000 |................|
000008ca: 00000000 00000000 00000000 00000000 |................|
000008da: 00000000 00000000 00000000 00020000 |................|
000008ea: 00000000 00008302 06030000 00000102 |................|
000008fa: 02000000 00000000 00000000 0006FF05 |................|
-hit enter for more-
0000090a: 686F7374 73616200 00000000 00000000 |hostsab.........|
0000091a: 00000000 00000000 00000000 0007FF07 |................|
0000092a: 696E6974 74616200 00000000 00000000 |inittab.........|
0000093a: 00000000 00000401 00000000 0008FF05 |................|
0000094a: 67726F75 70000000 00000000 00000000 |group...........|
0000095a: 00000000 00000500 00000000 00000000 |................|
0000096a: 00000000 00000000 00000000 00000000 |................|
0000097a: 00000000 00000600 00000000 00000000 |................|
0000098a: 00000000 00000000 00000000 00000000 |................|
0000099a: 00000000 00000700 00000000 00000000 |................|
000009aa: 00000000 00000000 00000000 00000000 |................|
000009ba: 00000000 00000800 00000000 00000000 |................|
000009ca: 00000000 00000000 00000000 00000000 |................|
000009da: 00000000 0000FF00 00000000 00000000 |................|
000009ea: 00000000 00000000 00000000 00000000 |................|
000009fa: 00000000 00000000 00000000 00056EBC |..............n.|
-hit enter for more-

Znaleźliśmy wymazany plik (group). Teraz należy znaleźć adres jego inode. Ten adres jest przechowywany w pierwszych czterech charakterach piątej kolumny, poprzedniej linii 0008. Należy go przetłumaczyć z systemu hex na dziesiętny. W tym przypadku to 8. Skierujmy się do inode i 8.

> i 8

Polecenie fsdb natychmiast wyświetli informację dotyczącą tego pliku taką jak jego wielkość (di_size), właścicieli (di_uid oraz di_gid), itp. Dla nas najważniejszy atrybut to di_nlik, który obecnie ma wartość 0 znaczącą, że plik został wymazany. W celu odzyskania tego pliku, należy zmienić tę wartość na 1. Zauważ użycie do tego celu komendy m oraz podanie pary “atrybut_ numer jego_wartość”

Inode 8 at block 36, offset 0x0:


[1] di_fileset: 16 [17] di_inostamp: 0x4a8a9e19
[2] di_number: 8 [18] di_gen: 1919804761
[3] di_size: 0x0000000000000252 [19] di_ixpxd.len: 4
[4] di_nblocks: 0x0000000000000001 [20] di_ixpxd.addr1: 0x00
[5] di_nlink: 0 [21] di_ixpxd.addr2: 0x00000023
[6] di_mode: 0x000081a4 di_ixpxd.address: 35
0100644 -rw-r--r-- [23] di_uid: 20008
[24] di_gid: 1
[9] di_atime.tj_nsec: 0x15b7c59c [25] di_atime.tj_sec:0x000000004a8d7326
[10] di_ctime.tj_nsec: 0x21da98c8 [26] di_ctime.tj_sec:0x000000004a8d7379
[11] di_mtime.tj_nsec: 0x15b7c59d [27] di_mtime.tj_sec:0x000000004a8d7326
[12] di_otime.tj_nsec: 0x15b7c59c [28] di_otime.tj_sec:0x000000004a8d7326
[13] di_eaRoot.eaFlag: 0x01 [29] di_eaRoot.eaDirectory: 0
EAv2 [30] di_eaRoot.eaMode:0x0000000000000000
[15] di_eaRoot.eaACL: 0
[16] di_eaRoot.aclOwner: 0 [32] di_eaRoot.aclTyp:0x0000000000000000
change_inode: [m]odify, [e]a, ac[l], [t]ree, or e[x]it > m
Please enter: field-number value > 5 1
Inode 8 at block 36, offset 0x0:


[1] di_fileset: 16 [17] di_inostamp: 0x4a8a9e19
[2] di_number: 8 [18] di_gen: 1919804761
[3] di_size: 0x0000000000000252 [19] di_ixpxd.len: 4
[4] di_nblocks: 0x0000000000000001 [20] di_ixpxd.addr1: 0x00
[5] di_nlink: 1 [21] di_ixpxd.addr2: 0x00000023
[6] di_mode: 0x000081a4 di_ixpxd.address: 35
0100644 -rw-r--r-- [23] di_uid: 20008
[24] di_gid: 1
[9] di_atime.tj_nsec: 0x15b7c59c [25] di_atime.tj_sec:0x000000004a8d7326
[10] di_ctime.tj_nsec: 0x21da98c8 [26] di_ctime.tj_sec:0x000000004a8d7379
[11] di_mtime.tj_nsec: 0x15b7c59d [27] di_mtime.tj_sec:0x000000004a8d7326
[12] di_otime.tj_nsec: 0x15b7c59c [28] di_otime.tj_sec:0x000000004a8d7326
[13] di_eaRoot.ea

Posted in Real life AIX.

Tagged with , , , , , , , , .



Copyright © 2016 - 2017 Waldemar Mark Duszyk. All Rights Reserved. Created by Blog Copyright.