.\" -*- 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/ext3/ext4 filesystem metadata to a file
.SH SYNOPSIS
.B e2image
[
.B \-r|Q
]
[
.B \-f
]
.I device
.I image-file
.br
.B e2image
.B \-I
.I device
.I image-file
.br
.B e2image
.B \-ra
[
.B \-cfnp
]
[
.B \-o
.I src_offset
]
[
.B \-O
.I dest_offset
]
.I src_fs
[
.I dest_fs
]
.SH DESCRIPTION
The
.B e2image
program will save critical ext2, ext3, or ext4 filesystem metadata 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 assist an expert in
recovering 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
When saving an e2image for debugging purposes, using either the
.B \-r
or
.B \-Q
options, the filesystem must be unmounted or be mounted read/only, in order
for the image file to be in a consistent state.  This requirement can be
overridden using the
.B \-f
option, but the resulting image file is very likely not going to be useful.
.PP
If
.I image-file
is \-, then the output of
.B e2image
will be sent to standard output, so that the output can be piped to
another program, such as
.BR gzip (1).
(Note that this is currently only supported when
creating a raw image file using the
.B \-r
option, since the process of creating a normal image file, or QCOW2
image currently
requires random access to the file, which cannot be done using a
pipe.  This restriction will hopefully be lifted in a future version of
.BR e2image .)
.PP
It is a very good idea to create image files for all of
filesystems on a system and save the partition
layout (which can be generated using the
.B fdisk \-l
command) at regular intervals --- at boot time, and/or every week or so.
The image file should be stored on some filesystem other than
the filesystem whose data it contains, to ensure that this 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, or in QCOW2 format.
Hence, if the sparse image file
needs to be copied to another location, it should
either be compressed first or copied using the
.B \-\-sparse=always
option to the GNU version of
.BR cp .
This does not apply to the QCOW2 image, which is not sparse.
.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 will 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 RESTORING FILESYSTEM METADATA USING AN IMAGE FILE
.PP
The
.B \-I
option will cause e2image to install the metadata stored in the image
file back to the device.  It can be used to restore the filesystem metadata
back to the device in emergency situations.
.PP
.B WARNING!!!!
The
.B \-I
option should only be used as a desperation measure when other
alternatives have failed.  If the filesystem has changed since the image
file was created, data
.B will
be lost.  In general, you should make a full image
backup of the filesystem first, in case you wish to try other recovery
strategies afterwards.
.PP
.SH RAW IMAGE FILES
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 directory blocks, which the standard image file does not have,
although this may change in the future.
.PP
Raw image files are sometimes used when sending filesystems to the maintainer
as part of bug reports to e2fsprogs.  When used in this capacity, the
recommended command is as follows (replace hda1 with the appropriate device):
.PP
.br
	\fBe2image \-r /dev/hda1 \- | bzip2 > hda1.e2i.bz2\fR
.PP
This will only send the metadata information, without any data blocks.
However, the filenames in the directory blocks can still reveal
information about the contents of the filesystem that the bug reporter
may wish to keep confidential.  To address this concern, the
.B \-s
option can be specified.  This will cause
.B e2image
to scramble directory entries and zero out any unused portions
of the directory blocks before writing the image file.  However,
the
.B \-s
option will prevent analysis of problems related to hash-tree indexed
directories.
.PP
Note that this will work even if you substitute "/dev/hda1" for another raw
disk image, or QCOW2 image previously created by
.BR e2image .
.PP
.SH QCOW2 IMAGE FILES
The
.B \-Q
option will create a QCOW2 image file instead of a normal, or raw image file.
A QCOW2 image contains all the information the raw image does, however unlike
the raw image it is not sparse. The QCOW2 image minimize the amount of disk
space by storing data in special format with pack data closely together, hence
avoiding holes while still minimizing size.
.PP
In order to send filesystem to the maintainer as a part of bug report to
e2fsprogs, use following commands (replace hda1 with the appropriate device):
.PP
.br
\	\fBe2image \-Q /dev/hda1 hda1.qcow2\fR
.br
\	\fBbzip2 -z hda1.qcow2\fR
.PP
This will only send the metadata information, without any data blocks.
However, the filenames in the directory blocks can still reveal
information about the contents of the filesystem that the bug reporter
may wish to keep confidential.  To address this concern, the
.B \-s
option can be specified.  This will cause
.B e2image
to scramble directory entries and zero out any unused portions
of the directory blocks before writing the image file.  However, the
.B \-s
option will prevent analysis of problems related to hash-tree indexed
directories.
.PP
Note that QCOW2 image created by
.B e2image
is regular QCOW2 image and can be processed by tools aware of QCOW2 format
such as for example
.BR qemu-img .
.PP
You can convert a qcow2 image into a raw image with:
.PP
.br
\	\fBe2image \-r hda1.qcow2 hda1.raw\fR
.br
.PP
This can be useful to write a qcow2 image containing all data to a
sparse image file where it can be loop mounted, or to a disk partition.
Note that this may not work with qcow2 images not generated by e2image.
.PP
.SH INCLUDING DATA
Normally
.B e2image
only includes fs metadata, not regular file data.  The
.B \-a
option can be specified to include all data.  This will
give an image that is suitable to use to clone the entire FS or
for backup purposes.  Note that this option only works with the
raw or QCOW2 formats.  The
.B \-p
switch may be given to show progress.  If the file system is being
cloned to a flash-based storage device (where reads are very fast and
where it is desirable to avoid unnecessary writes to reduce write wear
on the device), the
.B \-c
option which cause e2image to try reading a block from the destination
to see if it is identical to the block which
.B e2image
is about to copy.  If the block is already the same, the write can be
skipped.  The
.B \-n
option will cause all of the writes to be no-ops, and print the blocks
that would have been written.
.PP
.SH OFFSETS
Normally a filesystem starts at the beginning of a partition, and
.B e2image
is run on the partition.  When working with image files, you don't
have the option of using the partition device, so you can specify
the offset where the filesystem starts directly with the
.B \-o
option.  Similarly the
.B \-O
option specifies the offset that should be seeked to in the destination
before writing the filesystem.
.PP
For example, if you have a
.B dd
image of a whole hard drive that contains an ext2 fs in a partition
starting at 1 MiB, you can clone that fs with:
.PP
.br
\	\fBe2image \-aro 1048576 img /dev/sda1\fR
.br
.PP
Or you can clone a fs into an image file, leaving room in the first
MiB for a partition table with:
.PP
.br
\	\fBe2image -arO 1048576 /dev/sda1 img\fR
.br
.PP
If you specify at least one offset, and only one file, an in-place
move will be performed, allowing you to safely move the filesystem
from one offset to another.
.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
http://e2fsprogs.sourceforge.net.
.SH SEE ALSO
.BR dumpe2fs (8),
.BR debugfs (8)

