The gzip Recovery Toolkit

So you thought you had your files backed up - until
it came time to restore. Then you found out that you had bad sectors and
you've lost almost everything because gzip craps out 10% of the way through
your archive. The gzip Recovery Toolkit has a program - gzrecover - that
attempts to skip over bad data in a gzip archive. This saved me from
exactly the above situation. Hopefully it will help you as well.

I'm very eager for feedback on this program. If you download
and try it, I'd appreciate and email letting me know what your results were.
My email is
arenn@urbanophile.com.
Thanks.

ATTENTION

99% of "corrupted" gzip archives are caused by transferring
the file via FTP in ASCII mode instead of binary mode. Please re-transfer
the file in the correct mode first before attempting to recover from a file
you believe is corrupted.

Disclaimer and Warning

This program is provided AS IS with absolutely NO WARRANTY. It is not
guaranteed to recover anything from your file, nor is what it does recover
guaranteed to be good data. The bigger your file, the more likely that
something will be extracted from it. Also keep in mind that this program
gets faked out and is likely to "recover" some bad data. Everything
should be manually verified.

Downloading and Installing

Note that version 0.8 contains major bug fixes and improvements. See the
ChangeLog for details. Upgrading
is recommended. The old version is provided in the event you run into troubles
with the new release.

GNU cpio (version 2.6 or higher) -
Only if your archive is a compressed tar file and you don't already have this (try "cpio --version" to find out)

First, build and install zlib if necessary. Next, unpack the gzrt sources.
Then cd to the gzrt directory and build the gzrecover program by typing
make. Install manually by copying to the directory of your
choice.

Usage

Run gzrecover on a corrupted .gz file. If you leave the filename blank,
gzrecover will read from the standard input. Anything that can be read from
the file will be written to a file with the same name, but with a
.recovered appended (any .gz is stripped). You can override this with
the -o option. The default filename when reading from the
standard input is "stdin.recovered". To write recovered data to the standard
output, use the -p option. (Note that -p and -o cannot be used together).

To get a verbose readout of exactly where
gzrecover is finding bad bytes, use the -v option to enable verbose mode.
This will probably overflow your screen with text so best to redirect the
stderr stream to a file. Once gzrecover has finished, you will need to manually
verify any data recovered as it is quite likely that our output file is
corrupt and has some garbage data in it. Note that gzrecover will take
longer than regular gunzip. The more corrupt your data the longer it takes.
If your archive is a tarball, read on.

For tarballs, the tar program will choke because GNU tar cannot handle
errors in the file format. Fortunately, GNU cpio (tested at version 2.6
or higher) handles corrupted files out of the box.