Ext4magic: Inode - Directory - Journal - Installation - Zeit-Optionen - Tricks&Tipps - Manpage - Expert-Mode |
Um erst einmal prinzipiell die Ausgabe vorzustellen, die Ausgabe der Inode einer normalen Datei in der Gegenüberstellung der Ausgabe der selben Daten mittels des Linux-Befehls stat
ROBI@LINUX:~ # stat /boot/message File: `/boot/message' Size: 421376 Blocks: 830 IO Block: 1024 regular file Device: 811h/2065d Inode: 22 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2009-12-04 01:13:51.000000000 +0100 Modify: 2009-12-04 01:13:51.000000000 +0100 Change: 2009-12-04 01:13:51.000000000 +0100 ROBI@LINUX:~ # ext4magic /dev/sdb1 -f "message" -x Filesystem in use: /dev/sdb1 Dump internal Inode 22 Status : Inode is Allocated Inode: 22 Type: regular Mode: 0644 Flags: 0x0 Generation: 1797523886 Version: 0x00000000 User: 0 Group: 0 Size: 421376 File ACL: 0 Directory ACL: 0 Links: 1 Blockcount: 830 Fragment: Address: 0 Number: 0 Size: 0 ctime: 1259885631 -- Fri Dec 4 01:13:51 2009 atime: 1259885631 -- Fri Dec 4 01:13:51 2009 mtime: 1259885631 -- Fri Dec 4 01:13:51 2009 BLOCKS: (0-11):531-542, (IND):543, (12-267):544-799, (DIND):800, (IND):801, (268-411):802-945 TOTAL: 415
Es werden also durchaus ein paar mehr Informationen angezeigt, es wird auch ein anderes Format benutzt, es sollte aber keinerlei Probleme darstellen die Daten die mit "stat" angezeigt werden auch in der Ausgabe von ext4magic wiederzufinden. Was uns hier schon auffallen sollte, sind die unterschiedlichen Dateinamen beim Aufruf der Kommandos. Es handelt sich hier um ein Filesystem das normalerweise im Verzeichnis "/boot/" gemounted wird. Bei der Angabe des Dateinamens oder Path muss mit ext4magic jedoch immer vom Rootverzeichnis (ist immer Inode 2) dieses Filesystems ausgegangen werden, und nicht von Root des gesamten Linuxsystems.
Hier der Vergleich der Daten einer Inode für ein
Verzeichnis.
ROBI@LINUX:~ # stat /boot File: `/boot' Size: 1024 Blocks: 2 IO Block: 1024 directory Device: 811h/2065d Inode: 2 Links: 4 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2010-04-01 21:39:03.000000000 +0200 Modify: 2010-03-13 12:05:22.000000000 +0100 Change: 2010-03-13 12:05:22.000000000 +0100 ROBI@LINUX:~ # ext4magic /dev/sdb1 -f / -x Filesystem in use: /dev/sdb1 Dump internal Inode 2 Status : Inode is Allocated Inode: 2 Type: directory Mode: 0755 Flags: 0x0 Generation: 0 Version: 0x00000000 User: 0 Group: 0 Size: 1024 File ACL: 0 Directory ACL: 0 Links: 4 Blockcount: 2 Fragment: Address: 0 Number: 0 Size: 0 ctime: 1268478322 -- Sat Mar 13 12:05:22 2010 atime: 1270150743 -- Thu Apr 1 21:39:03 2010 mtime: 1268478322 -- Sat Mar 13 12:05:22 2010 BLOCKS: (0):517 TOTAL: 1 2 d 755 (2) 0 0 1024 13-Mar-2010 12:05 . 2 d 755 (2) 0 0 1024 13-Mar-2010 12:05 .. 11 d 700 (2) 0 0 12288 3-Dec-2009 21:20 lost+found 28673 d 755 (2) 0 0 1024 13-Mar-2010 12:05 grub 22 _ 644 (1) 0 0 421376 4-Dec-2009 01:13 message 14 l 777 (7) 0 0 1 3-Dec-2009 23:39 boot 23 _ 644 (1) 0 0 1236 3-Dec-2009 02:52 boot.readme 19 l 777 (7) 0 0 29 13-Mar-2010 12:04 vmlinuz 20 l 777 (7) 0 0 28 13-Mar-2010 12:05 initrd 21 _ 644 (1) 0 0 6757618 13-Mar-2010 12:05 initrd-2.6.31.12-0.1-desktop 15 _ 644 (1) 0 0 1512469 28-Jan-2010 16:35 System.map-2.6.31.12-0.1-desktop 16 _ 644 (1) 0 0 168515 28-Jan-2010 16:50 symvers-2.6.31.12-0.1-desktop.gz 17 _ 644 (1) 0 0 4098688 28-Jan-2010 16:35 vmlinuz-2.6.31.12-0.1-desktop 13 _ 600 (1) 0 0 512 4-Dec-2009 01:13 backup_mbr < 0> 0 (1) 0 0 0 initrd-2.6.31.8-0.1-desktop < 0> 0 (1) 0 0 0 System.map-2.6.31.8-0.1-desktop < 0> 0 (1) 0 0 0 symvers-2.6.31.8-0.1-desktop.gz < 0> 0 (1) 0 0 0 vmlinuz-2.6.31.8-0.1-desktop < 0> 0 (1) 0 0 0 config-2.6.31.8-0.1-desktop 18 _ 644 (1) 0 0 105422 28-Jan-2010 16:50 config-2.6.31.12-0.1-desktop
bei ext4magic wird also sofort bei einem Verzeichnis der Inhalt des Verzeichnisses mit ausgegeben. Als Vergleich hier auch mal die Ausgabe des "ls -il" Befehls von Linux, der in etwa die selben Informationen enthält.
ROBI@LINUX:~ # ls -il /boot total 12833 15 -rw-r--r-- 1 root root 1512469 Jan 28 16:35 System.map-2.6.31.12-0.1-desktop 13 -rw------- 1 root root 512 Dec 4 01:13 backup_mbr 14 lrwxrwxrwx 1 root root 1 Dec 3 23:39 boot -> . 23 -rw-r--r-- 1 root root 1236 Dec 3 02:52 boot.readme 18 -rw-r--r-- 1 root root 105422 Jan 28 16:50 config-2.6.31.12-0.1-desktop 28673 drwxr-xr-x 2 root root 1024 Mar 13 12:05 grub 20 lrwxrwxrwx 1 root root 28 Mar 13 12:05 initrd -> initrd-2.6.31.12-0.1-desktop 21 -rw-r--r-- 1 root root 6757618 Mar 13 12:05 initrd-2.6.31.12-0.1-desktop 11 drwx------ 2 root root 12288 Dec 3 21:20 lost+found 22 -rw-r--r-- 1 root root 421376 Dec 4 01:13 message 16 -rw-r--r-- 1 root root 168515 Jan 28 16:50 symvers-2.6.31.12-0.1-desktop.gz 19 lrwxrwxrwx 1 root root 29 Mar 13 12:04 vmlinuz -> vmlinuz-2.6.31.12-0.1-desktop 17 -rw-r--r-- 1 root root 4098688 Jan 28 16:35 vmlinuz-2.6.31.12-0.1-desktop
Das Format und die Besonderheiten der Verzeichnisdaten wird auf der Directory Seite vorgestellt.
Bei den Inodedaten in diesen Beispielen gibt es noch eine
Besonderheit.
.... BLOCKS: (0-11):531-542, (IND):543, (12-267):544-799, (DIND):800, (IND):801, (268-411):802-945 TOTAL: 415
Es handelt sich hier um die Aufschlüsselung der Datenblöcke die diese Inode adressiert.
Die Bedeutung dieser Ausgabe ist hier folgende:
Es handelt sich hier um die klassische Blockadressierung wie sie ext2 und ext3 verwenden.
Die Adressierung über die Extents
des ext4
Filesystems wird in einer ähnlicher Form angezeigt.
Level Entries Logical Physical Length Flags 0/ 1 1/ 1 0 - 16703 2791415 16704 1/ 1 1/ 9 0 - 2047 1826816 - 1828863 2048 1/ 1 2/ 9 2048 - 4095 1837056 - 1839103 2048 1/ 1 3/ 9 4096 - 6143 2463744 - 2465791 2048 1/ 1 4/ 9 6144 - 8191 2791424 - 2793471 2048 1/ 1 5/ 9 8192 - 10239 2795520 - 2797567 2048 1/ 1 6/ 9 10240 - 12287 2805760 - 2807807 2048 1/ 1 7/ 9 12288 - 14335 2859008 - 2861055 2048 1/ 1 8/ 9 14336 - 16383 2852864 - 2854911 2048 1/ 1 9/ 9 16384 - 16703 2876537 - 2876856 320
Es handelt sich hier um die genaue Aufschlüsselung der einzelnen
Extents dieser Inode.
In diesem Beispiel wird von der Inode aus
auf den Block 2791415 adressiert, in dem sich dann 9 Extents
befinden welche bis auf den letzten jeweils 2048 Blöcke große
Bereiche auf dem Datenträger adressieren.
Diese Informationen werden selten benötigt und können bei
größeren Dateien durchaus auch den gesamten Bildschirminhalt
füllen. Aus diesem Grund werden sie nur angezeigt wenn ext4magic
mit der Option "-x" gestartet wird. Diese Option
wird noch von anderen Funktionen benutzt und steuert die Ausgabe
einiger Funktionen.
Wenn es notwendig ist einmal den Inhalt eines solchen Datenblockes einsehen zu wollen, hier ein kleines Beispiel. Es soll der erste Block der ext3 Datei von oben angezeigt werden. (also Filesystemblock 531.)
ROBI@LINUX:~ # ext4magic /dev/sdb1 -B 531 Filesystem in use: /dev/sdb1 Dump Filesystemblock 531 Status : Block is Allocated 0000: c7 71 13 08 62 ae a4 81 8f 01 8f 01 01 00 00 00 .q..b........... 0010: 18 4b 3f 54 0a 00 01 00 f3 fb 31 36 78 31 36 2e .K?T......16x16. 0020: 66 6e 74 00 06 8e 82 d2 e0 07 00 00 13 04 12 20 fnt............ 0030: 00 60 ed 04 21 00 e0 ed 04 22 00 e0 ee 04 23 00 .`..!...."....#. 0040: a0 ef 04 24 00 a0 f4 04 25 00 80 f9 04 26 00 80 ...$....%....&.. 0050: 01 05 27 00 c0 07 05 28 00 60 08 05 29 00 e0 0b ..'....(.`..)... 0060: 05 2a 00 60 0f 05 2b 00 a0 12 05 2c 00 20 14 05 .*.`..+....,. .. 0070: 2d 00 80 15 05 2e 00 20 16 05 2f 00 a0 16 05 30 -...... ../....0 0080: 00 60 1a 05 31 00 60 1f 05 32 00 60 22 05 33 00 .`..1.`..2.`".3. 0090: 40 26 05 34 00 a0 2a 05 35 00 a0 2e 05 36 00 80 @&.4..*.5....6.. 00a0: 32 05 37 00 a0 37 05 38 00 40 3b 05 39 00 20 40 2.7..7.8.@;.9. @ 00b0: 05 3a 00 40 45 05 3b 00 00 46 05 3c 00 00 48 05 .:.@E.;..F.<..H. 00c0: 3d 00 e0 4b 05 3e 00 40 4d 05 3f 00 20 51 05 40 =..K.>.@M.?. Q.@ 00d0: .................. ........
Es handelt sich also um ein Ausgabeformat vergleichbar des Linuxbefehls "hexdump -C".
Von Linux ist man 3 Zeitstempel gewohnt die atime ; mtime ; ctime.
Mit ext4magic werden weitere Zeitstempel in den Inode angezeigt, die dtime, sie bezeichnet den Zeitpunkt an dem diese Inodedaten gelöscht wurden und bei den ext4 Filesystemen noch eine crtime, das ist der Zeitpunkt zu dem diese Inode für eine neue Datei benutzt worden ist, also diese ist die echte "Create Time" einer Datei.
3 Zeitstempel werden in jeder Inodeausgabe immer angezeigt, die "dtime" und die "crtime" dagegen nur, soweit sie vorhanden und gesetzt ist.
das verwendete Ausgabeformat:
ctime: 1274512877:2933655396 -- Sat May 22 09:21:17 2010 atime: 1274512899:3413691564 -- Sat May 22 09:21:39 2010 mtime: 1274512877:2933655396 -- Sat May 22 09:21:17 2010 crtime: 1259871665:0000000000 -- Thu Dec 3 21:21:05 2009
Die erste Zahl zB. "1274512877" hinter dem Namen des Zeitstempels ist die Zeit in Sekunden (UTC), diese Zeitangabe wird in ext4magic für die Eingabe Optionen verwendet. Es ist also möglich sich Zeiten direkt aus den Inodeausgaben herauszukopieren, andere Funktionen enthalten ebenfalls immer dieses Sekunden Format mit in ihren Ausgaben, so ist auf der Konsole weitestgehend ein manuelles Umrechnen von Zeiten für die Eingabe zB. mittels des Befehls date nicht notwendig.
Die bisherigen Beispiele auf dieser Seite haben immer die aktuelle Inode des Filesystems gezeigt. Auch ist es so nur möglich ungelöschte Inode einzusehen. Es ist aber auch möglich alle oder bestimmte Inodekopien aus dem Journal auszugeben. Ausgelöst wird das dadurch, wenn beim Kommandoaufruf eine Option mitgegeben wird welche das Öffnen des Jorunals bewirkt. Hier im Beispiel ist es die Option "-T" ; möglich ebenfalls auch die Optionen -J ; -a <Zeit> oder -b <Zeit>
ROBI@LINUX:~ # ext4magic /home/rob/test/test.iso -I2 -Tx | sed -ne '/^Dump/,/^BLOCKS/p' Dump Inode 2 from journal transaction 24 Inode: 2 Type: directory Mode: 0755 Flags: 0x0 Generation: 0 Version: 0x00000000:00000000 User: 0 Group: 0 Size: 4096 File ACL: 0 Directory ACL: 0 Links: 11 Blockcount: 8 Fragment: Address: 0 Number: 0 Size: 0 ctime: 1260473457:0000000000 -- Thu Dec 10 20:30:57 2009 atime: 1260473464:0000000000 -- Thu Dec 10 20:31:04 2009 mtime: 1260473457:0000000000 -- Thu Dec 10 20:30:57 2009 crtime: 1260470173:0000000000 -- Thu Dec 10 19:36:13 2009 Size of extra inode fields: 28 BLOCKS: Dump Inode 2 from journal transaction 25 Inode: 2 Type: directory Mode: 0755 Flags: 0x0 Generation: 0 Version: 0x00000000:00000000 User: 0 Group: 0 Size: 4096 File ACL: 0 Directory ACL: 0 Links: 11 Blockcount: 8 Fragment: Address: 0 Number: 0 Size: 0 ctime: 1260473478:0000000000 -- Thu Dec 10 20:31:18 2009 atime: 1260473478:0000000000 -- Thu Dec 10 20:31:18 2009 mtime: 1260473478:0000000000 -- Thu Dec 10 20:31:18 2009 crtime: 1260470173:0000000000 -- Thu Dec 10 19:36:13 2009 Size of extra inode fields: 28 BLOCKS: Dump Inode 2 from journal transaction 26 Inode: 2 Type: directory Mode: 0755 Flags: 0x0 Generation: 0 Version: 0x00000000:00000000 User: 0 Group: 0 Size: 4096 File ACL: 0 Directory ACL: 0 Links: 11 Blockcount: 8 Fragment: Address: 0 Number: 0 Size: 0 ctime: 1260473508:0000000000 -- Thu Dec 10 20:31:48 2009 atime: 1260473513:0000000000 -- Thu Dec 10 20:31:53 2009 mtime: 1260473508:0000000000 -- Thu Dec 10 20:31:48 2009 crtime: 1260470173:0000000000 -- Thu Dec 10 19:36:13 2009 Size of extra inode fields: 28 BLOCKS: Dump Inode 2 from journal transaction 29 Inode: 2 Type: directory Mode: 0755 Flags: 0x0 Generation: 0 Version: 0x00000000:00000000 User: 0 Group: 0 Size: 4096 File ACL: 0 Directory ACL: 0 Links: 3 Blockcount: 8 Fragment: Address: 0 Number: 0 Size: 0 ctime: 1260473770:0000000000 -- Thu Dec 10 20:36:10 2009 atime: 1260473772:0000000000 -- Thu Dec 10 20:36:12 2009 mtime: 1260473770:0000000000 -- Thu Dec 10 20:36:10 2009 crtime: 1260470173:0000000000 -- Thu Dec 10 19:36:13 2009 Size of extra inode fields: 28 BLOCKS: Dump Inode 2 from journal transaction 47 Inode: 2 Type: directory Mode: 0755 Flags: 0x0 Generation: 0 Version: 0x00000000:00000000 User: 0 Group: 0 Size: 4096 File ACL: 0 Directory ACL: 0 Links: 3 Blockcount: 8 Fragment: Address: 0 Number: 0 Size: 0 ctime: 1272100594:0000000000 -- Sat Apr 24 11:16:34 2010 atime: 1272048604:0000000000 -- Fri Apr 23 20:50:04 2010 mtime: 1272100594:0000000000 -- Sat Apr 24 11:16:34 2010 crtime: 1260470173:0000000000 -- Thu Dec 10 19:36:13 2009 Size of extra inode fields: 28 BLOCKS:
Es handelt sich hierbei um ein Root-Verzeichnis aus einem Filesystemimage und es wurden die Verzeichnisausgaben mittels des Befehls sed entfernt.
Hier sind jetzt die einzelnen Inode Kopien die sich im Journal befinden aufgelistet. Je nachdem wie viele Kopien einer Inode sich im Journal befinden kann die Geschichte einer Datei verfolgt werden, oder es kann ermittlet werden, ob eine Inode für mehrere Dateien Verwendung gefunden hat. ext4magic geht intern immer davon aus, dass es sich bei Inodekopien mit der selben ctime, der selben Dateigröße und der selben Anzahl von Links, um eine identische Kopie handelt und zeigt sie nicht mehrfach an, nur weil sich die atime geändert hat, oder weil der Inodeblock wegen Aktivitäten anderer Inode mehrfach ins Journal geschrieben wurde.
Jede dieser Inodekopien (mit Ausnahme von Verzeichnissen, dort funktioniert es etwas anders) die so im Journal gefundnen werden, kann und in der die dtime nicht gesetzt ist, könnte von ext4magic dazu genutzt werden, eine Kopie dieser Datei zu genau diesem Zeitpunkt herzustellen. Unter der Voraussetzung, das sich in der Zwischenzeit die Daten in den von dieser Inode adressierten Datenblöcken nicht geändert hat, kann so eine genaue Kopie dieser Datei zu diesem Zeitpunkt hergestellt werden. Die Steuerung welche Inode jetzt für einen Recoverversuch genutzt werden soll, ist unter anderem von den Recoveroptionen und von den verwendeten Zeitoptionen von extmagic abhängig. In besonders schwierigen Fällen können auch einzelne Dateien durch das direkte auswählen einer bestimmten Inodekopie recovert werden. ,
Ext4magic: Inode - Directory - Journal - Installation - Zeit-Optionen - Tricks&Tipps - Manpage - Expert-Mode |