.\" -*- nroff -*-
.\" Copyright 2001 by Theodore Ts'o.  All Rights Reserved.
.\" This file may be copied under the terms of the GNU Public License.
.\" 
.TH E2IMAGE 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
e2image \- Save critical ext2 filesystem data to a file
.SH SYNOPSIS
.B e2image
[
.B \-r
]
.I device
.I image-file
.SH DESCRIPTION
The
.B e2image
program will save critical filesystem data on the ext2 filesystem located on 
.I device  
to a file specified by 
.IR image-file .
The image file may be examined by 
.B dumpe2fs
and
.BR  debugfs ,
by using the
.B \-i
option to those programs.  This can be used by an expert in assisting
the recovery of catastrophically corrupted filesystems.  In the future,
e2fsck will be enhanced to be able to use the image file to help
recover a badly damaged filesystem.
.PP
If  
.I image-file
is -, then the output of 
.B e2image
will be sent to standard output.
.PP
The 
.B \-r
option will create a raw image file instead of a normal image file.  
A raw image file differs
from a normal image file in two ways.  First, the filesystem metadata is
placed in the proper position so that e2fsck, dumpe2fs, debugfs,
etc. can be run directly on the raw image file.  In order to minimize
the amount of disk space consumed by a raw image file, the file is
created as a sparse file.  (Beware of copying or
compressing/decompressing this file with utilities that don't understand
how to create sparse files; the file will become as large as the
filesystem itself!)  Secondly, the raw image file also includes indirect
blocks and data blocks, which the current image file does not have,
although this may change in the future.
.PP
It is a very good idea to periodically (at boot time and 
every week or so) to create image files for all of
filesystems on a system, as well as saving the partition
layout (which can be generated using the using
.B fdisk -l
command).  Ideally the image file should be stored on some filesystem
other that
the filesystem whose data it contains, to ensure that its data is
accessible in the case where the filesystem has been badly damaged.
.PP
To save disk space, 
.B e2image
creates the image file as a sparse file.  
Hence, if the image file
needs to be copied to another location, it should
either be compressed first or copied using the 
.B \--sparse=always
option to GNU version of 
.BR cp .  
.PP
The size of an ext2 image file depends primarily on the size of the
filesystems and how many inodes are in use.  For a typical 10 gigabyte
filesystem, with 200,000 inodes in use out of 1.2 million inodes, the
image file be approximately 35 megabytes; a 4 gigabyte filesystem with
15,000 inodes in use out of 550,000 inodes will result in a 3 megabyte
image file.  Image files tend to be quite
compressible; an image file taking up 32 megabytes of space on
disk will generally compress down to 3 or 4 megabytes.
.PP
.SH AUTHOR
.B e2image 
was written by Theodore Ts'o (tytso@mit.edu).
.SH AVAILABILITY
.B e2image
is part of the e2fsprogs package and is available from anonymous 
http://e2fsprogs.sourceforge.net.
.SH SEE ALSO
.BR dumpe2fs (8),
.BR debugfs (8)

