Ext4magic: Inode - Directory - Journal - Install - Time_Options - Histogram - Scenarios - Tips&Tricks - Manpage - Expert-Mode |
ext4magic(8) Administrations Tool ext4magic(8)
NAME
ext4magic - allows to recover deleted files on ext3/4 filesystems
SYNOPSIS
ext4magic {-M|-m} [-j <journal_file>] [-d <target_dir>] <filesystem>
ext4magic [-S|-J|-H|-V|-T] [-x] [-j <journal_file>] [-B n|-I n|-f
<file_name>|-i <input_list>] [-t n|[[-a n][-b n]]] [-d <target_dir>]
[-R|-r|-L|-l] [-Q] <filesystem>
DESCRIPTION
The deletion of files in ext3/4 filesystems can not be easily reversed.
Zero out of the block references in the Inodes makes that impossible.
Experience with other programs have proved, it is often possible, to
restore sufficient information for a recover of many data files,
directly from the filesystem Journal. ext4magic can extract the infor-
mation from the Journal, and can restore files in entire directory
trees, provided that the information in the Journal are sufficient.
This tool can recover the most file types, can recover large and sparse
files, recovered files with orginal filename, with the orginal owner an
group, the orginal file mode bits, and also the old atime/mtime stamp.
The filesystem Journal has a very different purpose, and it will not be
possible to recover any file at any time. Many factors affects which
data and how long the data store in the Journal. Read the ext4magic
documentation for more extensive information about the filesytem Jour-
nal.
OPTIONS
Magic Options: (new in version 0.2.0) These options are for a mulit-
stage recover especially for file restore after a recursiv deletion of
parts or the whole file system. (third step currently available for
ext3 by versions 0.2.x; a new experimental function for ext4 is
included in version 0.3.0-pv0.)
Umount the file system directly after an accidentally destroy and use
these options with the umount file system or with a copy of this file
system. The program automatically determines the correct time options
if the deletion has only worked a short time (< 5 min) . For very
large deletions, you must use the " after time "
In the first and second step files restored by copies of inodes. The
third step is trying to restore the remaining files without inode
copies. This may take a long time
-M Try to recover all files. This option should be used if the
entire Filessytem was deleted.
-m Try to recover only all deleted files. Use this option with a
partially deleted Filesystem.
Information Options: These options generate generic status information
from the filesystem and the Journal.
-S Print the filesystem superblock, the option. -x allows the
additional display of content of the group descriptor table.
-J Print the content of the Journal superblock. This option also
can used to force loading the Journal. This has a flow control
effect in ext4magic with some other options.
-H Output a histogram of time stamps from all filesystem Inodes.
Allows you to determine the exact time of changes in the
filesystem. In connection with a directory name or a directory
Inode, only the time stamps of this directory tree will be dis-
played. There are not evaluated any changes, only one per Inode.
either the last change or the deletion time per Inode arrives to
display. If present (ext4), it also create a histogram of create
time stamps.
The optional option -x allows additional a better resolution of
the time intervals.
-V Print the version of ext4magic and libext2fs
-T Display the entire transaction list of all copies of data blocks
in the Journal. In conjunction with the -B; -I and -f , only
display the corresponding data blocks for this data . The
optional option -x allows a additional transmission time of the
transactions, but only if the block is a Inode block. The print
is in the same order as the data in journal. You can make con-
clusions from the data received in the Journal. After the
import of backups or after change of timestamps of files, the
additional transmission time will display not always the real
transmission time. If here absolutely incorrect time entries,
then check if you using a journal of a read-write open file sys-
tem.
-x controls optional the output format and the information content
of certain commands. Affects the following options: -S; -H; -T
; -B; -I; -f; -L; -l Detailed description see there.
Selection Options: These options specify the exact files, directories,
and data blocks. One hand, they produce specific information, and on
the other hand, be used to address the data for the Action Options.
ext4magic will accept only one of these options at command.
-B n n is the data block number of a filesystem datablock. Without
further options it print a "one-byte" hex+ASCII dump from the
data block on the filesystem, like the "hexdump -C" command. The
optional option -x produced a "four byte" hex+ASCII output.
With the option -t n it print a copy of the filesystem data
block with this transaction number from the Journal.
# ext4magic /dir/filesytem.iso -B 97 -t 22
print a hexdump of the copy from filesystem block number 97,
which has been writing to the Journal with the transaction num-
ber 22. All copies of a particular data block in the Journal and
the associated transaction numbers you can find with the
optional Option -T
# ext4magic /dir/filesystem.iso -B 97 -T
will print a list with all copies of filesystem block number 97
with the transaction numbers. If this data block is a Inode
block, print out the exact time for the transaction with the
optional option -x
-I n n is the Inode number. Without any other option, the output is
the content of the real filesystem Inode. With a optional -x
additional output of a list of all data blocks addressed by this
Inode. If Inode is a directory Inode, the content of the direc-
tory entrys also printed.
Together with one of the following option -T; -J the output is
not the content from the real filesystem Inode. The content of
all differend Inode copies found in the Journal are printed.
with the option -t n only the content of the Inode from transac-
tion " n " are printed.
the option -I n can also be used in conjunction with the options
-L; -l; -r or -R (show there)
-f <filename>
the function is the same as -I n only here is the <filename>
given instead the Inode number. ext4magic search the filesystem
to find the Inode number. The filename can be a directory or a
filename and must be specified here from the root directory of
this filesystem, and not from the root directory of the LINUX
system.
An example: the mount point for this filesystem is " /home " an
the filename for Linux is " /home/usr1/Document " you can use
now
# ext4magic /dev/sda3 -f usr1/Document
The root directory of the filesystem you can use
-f /
or
-f ""
for ext4magic this is the same.
you should specify no leading "/" for all other filename. And
directory names you should specify without final "/" .
Expert Options: (new 0.2.1) The optional Expert-Mode must be enabled
with the option "--enable-expert-mode" by configure. This makes it pos-
sible to open and recover front corrupted file systems. In the current
version it is possible to address backup superblocks and the attempt to
recover of the Journal address from the data of the super block, and
recover all undamaged files after the filesytem was partially damaged
or overwritten.
-s blocksize -n blocknumber
with this options you can select the backup superblock. block-
size can be 1024, 2048 or 4096. blocknumber is the block number
of the backup superblock this depends on the block size. Use the
same values as with "fsck" or "debugfs" or use the output of
"mkfs -n .." to determine the correct value.
Use the options necessarily in the order "-s ... -n ..."
-c This will attempt to find the journal using the data of the
superblock. Can help if the first inode blocks of the file sys-
tem are damaged.
-D trying a restore of all files from a badly damaged file system.
The combination of all these Expert Options try a file system
restore if the superblock broken and the beginning of the file
system is corrupted or overwritten. This can only work if
e2fsck has not yet changed the faulty file system.
Example: the first few megabytes of the file system are over-
written. The following tries a copy of all undamaged files of
the filesystem. Target directory is "/tmp/recoverdir"
# ext4magic /dev/sda1 -s 4096 -n 32768 -c -D -d /tmp/recoverdir
-Q This is a optional high quality Option for recover and only
impact with " -r " and " -R ". Without this option, any valid
file name restored from the directories and you can set the "
before " time stamp to a time in which all files are deleted. So
you will find the maximum possible number of files. It need not
necessarily be found old directory data blocks in the Journal.
However, there are some files found too much. In this mode, re-
used file name and reused Inode can not be noticed. As a result
some file will be created with the extension " "#" or some files
created with wrong content. You have to check the files and find
bad files and delete itself.
With option " -Q " works ext4magic more accurately, and can
avoid such false and duplicate files. This requires old data
blocks of the directories in the Journal. You will not find of
all directories those old blocks in the Journal. Only directo-
ries in which files have been previously created or deleted, but
not of directories in which no change has been a long time. You
should set the time stamp " before " immediately before destruc-
tion time of the files. Are not sufficient directory data avail-
able, may be, ext4magic can't found deleted files or entire
directory content. This option should be used very carefully and
will achieve good results only in a few directories.
Time Options: With this options you specify a time window at which the
program searches for matching time stamps in the Journal data.
ext4magic required for most internaly functions two times. A time
"after" and a time "before".
Found Inode only accepted, if not deleted and there time stamp less
than "before". If the delete time is less then "after", the Inode are
also not used. ext4magic is still trying to find for valid directory
Inode also a time-matching directory data. For a recover action
"before" set to a value at which the data deleted, and "after" set to a
value at which the data available. Inodes and directory data with other
timestamps will be skipped and not used.
Default, without any time option, ext4magic will search with "now" for
the internal time "before", and "now -24 hour" for the internal time
"after". If you try to recover without any time option, so you search
only over the last 24 hours. If you wait a couple of days before you
try to recover deleted data, you must always use time options, or you
find nothing
-a n with this option you can set the " after " time
-b n with this option you can set the " before " time
n is the number of seconds since 1970-01-01 00:00:00 UTC. This
time information can you find in many prints of ext4magic, and
you can it produce on the console with the command "date" and
also insert directly in the ext4magic command line.
-a $(date -d "-3day" +%s) -b $(date -d "-2day" +%s)
this example set "after=now-36h" and "before=now-24h"
-t n is an indirect time option. you can use it with the options -B;
-I; -f The value n is the transaction number. With this option
you can print, list, or recover the data from this transaction
number. you can find the transaction numbers with the option -T
or in the print of the Inode content.
File-, IN- and OUT-Options: With these options group, you select the
filesystem, and other optional file input and output for control of
ext4magic.
<filesystem>
selects the filesystem and must always be set. <filesystem> can
be a blockdevice with ext3/4 filesystem, it can also be a uncom-
pressed file image of such a partition.
-j <journal_file>
optional you can select a external copy of the Journal file.
Without this option, automatically the internal Journal or, if
configured, the external Journal on a block device will used.
-d <target_dir>
select the output directory. There, the recovered files were
written. If it does not exist, it is created. By default, cre-
ated files are written to the subdirectory " RECOVERDIR " in the
workpath of the actual shell. This output directory can not be
on the same filesystem to be tested filesytem, and should have
sufficient space to write the recovered files. The filesystem on
this directory should be also ext3/4, otherwise, not LINUX like
filesytems generate some errors while writing the file
properties. Either you must first changed with the shell in
such a suitable filesystem, or you must specify the -d with a
target to such a directory
-i <input_list>
input_list is a input file. Must contain a list with double-
quoted filenames. The files from the list will be restored with
option -r or -R
Blank lines, not cleanly double quoted filenames and all areas
before and after " will be ignored. Such a double-quoted list
of file names can create with options -l -x or -L -x by
ext4magic and edited by script or by hand.
Action Options: This option group includes list and recover options.
All functions together, they work recursiv controlled by the time
options through directory trees. The starting point for search is
determined by a directory name or a directory Inode number. Default is
root of this Filesystem. Matching the time options, the filesystem
data, inclusive directory data, taken from the Journal. If good data
from the file system sections available in Journal, it is possible to
see or recover the state of the filesystem at different times.
-L Prints the list of all filenames and Inode number of the
selected directory tree. Included here also are deleted files
and deleted directory trees. With the additional option. -x
the file names are printed double-quoted. You can use it for a
"Input list" with option -i
-l Prints a list of all filenames which have not allocated data
blocks. At the beginning of the line are the percentage of unal-
located data blocks. After deletion you find here all the file
names you can recover with the Journal data. If you use a very
old value for the "before" time, it is possible there are files
whose data blocks reused and these files in the interim also
been deleted. Also included in the list all files without data
blocks, symbolic links, empty and other special files.
Likewise double-quoted file names with optional -x
-r applied to directories, all files without conflicts with the
occupied blocks will recovered. This are all you can sea with
the option -l and be 100% unallocated. This options only recover
deleted files and files without data blocks, in example: sym-
bolic links or empty files.
The recovered files written to the RECOVERDIR/ This can also set
to an alternate <target_dir> with the option -d
All files become the old filename and if possible, also the old
file properties. A subdirectory tree can set with "-f dirname"
oder "-I inodenumber" If use with a given Inode number, the
directory name is set to <inodenumber>
The Time options affect the search. If a file name already
exists, or you recover again, it not overwrite files, and a new
filename by added a final "#" will created. The maximum ist the
extension " ##### " for a filename.
single files also can recovered, possible search with time-
stamps or transaction number.
(new 0.2.1): Starts this function from the root directory the
first stage of the magic functions will follow.
This starts "lost directory search" and "lost file search" and
recovers all the deleted inode that can not be assigned to a
file name. These files you can find in the directories MAGIC-1
and MAGIC-2
-R recovers directory tree, is the same as -r
But two very important differences: Recover of all matched
Inodes, even if the blocks allocated, and recover if possible
the old directory properties. Also empty dirctories will be
restored. This recovers all deleted and all undeleted files,
and it's possible to recover older file versions or directory
versions.
In completely deleted directories the behavior " -R " and " -r "
is identical. The difference is there only the complete recover
of all directories with option " -R ". You can also restore
individual files with time options or a transaction number.
For all recover cases ACL, SEL and other extended attribute can not
recovered in the current version.
The output starts at line with a string "--------" before the recovered
file name. This is a sign of successful recover. Are not enough permis-
sions to write the recovered files, then you will see there some "x" in
the string.
At the end of the process, possibly an issue comes from the hardlink
database. A positive number before a file name means: not found all
hardlinks to this file. A negative number means: it created too many
hardlinks to this file (possible are, reused filenames or reused
Inodes, and so, too many or wrong old filenames for this hardlink. -
But also possible - all files for this hardlink are correct, the time-
options was not set correct and because of that, the selected inode for
the recover was not up to date. You should check such reports.)
Re-used data blocks can't realize and so it's possible, it ends in some
corrupted files. Check in any case, all the recoverd files before you
use them.
EXAMPLES
Print the content of a Inode, there are some possibilities.
# ext4magic /dev/sda3 -f /
# ext4magic /dev/sda3 -I 2
the output is the actual filesystem root Inode. In first example
input the pathname, second example Inode 2 is also the root
directory
# ext4magic /tmp/filesystem.iso -f / -T -x
use filesystem image "/tmp/filesystem.iso", search and print all
transactions of the Block which included the root Inode, and
print all differend Inode. Inclusiv the blocklist off the data
blocks. If it's a directory, then print also for each individual
Inode the content of the directory.
# ext4magic /tmp/filesystem.iso -j /tmp/journal.backup -I 8195
-t 182
Use filesystem image "/tmp/filesystem.iso" and read from exter-
nal Journal in file "/tmp/journal.backup" and print the content
of the Inode number 8195 from the journal transaction number 182
# ext4magic /dev/sda3 -f user1/Documents -a $(date -d "-3 day"
+%s) -b $(date -d "-2 day" +%s)
print a undeleded Inode for pathname "user1/Documents" two to
three days back. If it's a directory, then also the content of
this directory. If can not found the old directory blocks in
Journal, the directory content would be the actual from filesys-
tem.
Examples of simple Recover
# ext4magic /dev/sda3 -r -f user1/picture/cim01234.jpg -d /tmp
Recover the file "/home/user1/picture/cim01234.jpg" which has
just been deleted. The file system is mounted normally under
"/home". Note the file path is specified from the root direc-
tory of the file system and not from the root of the entire
Linux system. Whenever possible, umount the file system for the
recover. The file will be written as "/tmp/user1/pic-
ture/cim01234.jpg"
# ext4magic /dev/sda3 -r
try to restore all files deleted last 24 hours. Write to direc-
tory "./RECOVERDIR/"
# ext4magic /dev/sda3 -R -a $(date -d "-5day" +%s)
Attempts to recover all files, even if they are already par-
tially overwritten, recover also all not deleted files. The
erase time is 4 days ago.
# ext4magic /dev/sda3 -M -d /home/recover
try multi-stage recover of all files after the filesystem is
deleted with a "rm -rf *" . Write the files to "/home/recover".
(on ext4: in this version skipped the last step.)
# ext4magic /dev/sda3 -RQ -f user1/Dokuments -a 1274210280 -b
1274211280 -d /mnt/testrecover
try to restore the directory tree "user1/Dokuments/". The "-b"
timestamp you must set just before deleting files, the "-a"
timestamp prevents found old file versions. This will only work
well, if you've there created or deleted files bevor the "-b"
timestamp. Write to the directory "/mnt/testrecover/". If only a
few files recovers, attempts the same without the option -Q
# ext4magic /home/filesystem.iso -Lx -f user1 | grep "jpg" >
./tmpfile
# ext4magic /home/filesystem.iso -i ./tmpfile -r -d
/mnt/testrecover
try to restore only all deleted files from directory tree
"user1/", and have "jpg" in filename. (last 24 hour) and write
to "/mnt/testrecover" - use a temporary file "./tmpfile" for a
list of filenames.
BUGS
Direct use of the Journal of a currently read-write open filesystem
produce reading of bad blocks. Such bad blocks provide program errors
and false results. You shall therefore never use the Journal of such a
read-write open file system directly. Should it be necessary to use a
mounted file system, create a copy of the file system journal and used
the option -j
AUTHOR
Roberto Maar
SEE ALSO
debugfs (8) , e2fsck (8)
version 0.2.3 Oct 2011 ext4magic(8)
Ext4magic: Inode - Directory - Journal - Install - Time_Options - Histogram - Scenarios - Tips&Tricks - Manpage - Expert-Mode |