.TH myrescue "2" "February 2018" "myrescue 0.9.6"
.SH NAME
myrescue \- Harddisc Rescue
.SH SYNOPSIS
.B myrescue
.RB [ -b
.IR block-size ]
.RB [ -B
.IR bitmap-file ]
.RB [ -A ]
.RB [ -S ]
.RB [ -r
.IR retry-count ]
.RB [ -f
.IR skip-failed ]
.RB [ -s
.IR start-block ]
.RB [ -e
.IR end-block ]
.RB [ -R ]
.RB [ -G
.IR good-range ]
.RB [ -F
.IR failed-range ]
.RB [ -T ]
.RB [ -J
.IR jump-after-blocks ]
.RB [ -U
.IR usb-device-file ]
.I input-file
.I output-file
.SH DESCRIPTION
myrescue is a program to rescue the still-readable data from a
damaged harddisk. It is similiar in purpose to dd_rescue, but it
can be run in multiple passes and has options to avoid damaged areas
to first handle the not yet damaged part of the disk.
.PP
The program tries to copy the device blockwise to a file and
keeps a table ("block bitmap") noting whether a block has been
successfully copied, not yet handled or has had errors. This block
bitmap is used in successive passes to only read the not yet
rescued blocks.
.PP
The program has a special skip mode to handle read errors. Usually
harddisk surface defects cover more than just one block and continuous
reading in defect areas can damage the surface, the heads and (by
permanent recalibration) the drive mechanics. If this happens, the
chances of rescuing the remaining undamaged data drop dramatically. So
in skip mode, myrescue tries to get out of damaged areas quickly by
exponentially increasing the stepsize. The skipped blocks are marked
as unhandled in the block bitmap and can be retried later.
.PP
As another alternative, the program can jump around on the disc,
trying random blocks to first get an overview of the damage. In case
of regular defects (e.g. an entire failed head) this can be used to
determine the physical disc structure and to avoid these regions in
the first run.
.PP
Also there are options to avoid getting close to already recognized
defects or stay in the proximity of good regions.
.PP
Finally, the program has an option to multiply try to read a
block before considering it damaged.
.SH NOTE
.B This tools is no replacement for a professional data recovery service!
If you do have the latter option, don't even think of using
.BR myrescue ,
as it may further damage your disk. This tool is
provided only for the case that you are absolutely desperate and
definitely cannot afford a professional data recovery and know what
you are doing.
.PP
Data recovery - whether professional or DIY - is always careful
detective work. Damaged drives deteriorate rapidly and behave
nondeterministically, you may not get a second chance once you made a
mistake. So you have to be fully aware of what you're doing and
understand precisely what's happening. If you are unsure it's probably
best to stop right now and ask a linux guru for assistance.
.PP
In any case do not expect too much. While complete restores have been
witnessed, you should not take them for granted. A better attitude is
to consider your data lost and be glad for any survivors that turn up.
.PP
The usual GPL disclaimer applies. Especially the NON-WARRANTY OF
FITNESS FOR A PARTICULAR PURPOSE. Don't blame (or sue) me if it
fails to recover or further damages your data.
.PP
And a final word you probably don't want to hear in this situation:
For the future consider a routinely backup to avoid a "next time".
.SH OPTIONS
.TP
.BI -b " block-size"
The size of the blocks (in bytes). Set this to your
harddiscs error detection/correction unit size. Usually
this is 4096, which happens to be the default.
.TP
.BI -B " bitmap-file"
The file containing the status table of all blocks. Nice (or
frightening...) to view with hexdump. 01 means OK; 02 means that the
block was OK, but took a long time to read; 00 means not yet done;
negative values mean the number of failed read attempts. If not
given, defaults to
.IB output-file .bitmap
.TP
.B -A
Abort when encountering errors.
.TP
.B -S
Activate skip mode: When encountering errors increase the stepsize
exponentially until a readable block is found.
.TP
.BI -f " skip-failed"
Skip blocks that have already had
.I skip-failed
failures. Useful to avoid scratching the same block over and over again.
.TP
.BI -r " retry-count"
The number of times to read a block before it is declared
bad for this run. (You can still retry it on the next run.) Default: 1
.TP
.BI -s " start-block"
The number of the block to start with. Default: 0
.TP
.BI -e " end-block"
The number of the block, where reading stops (not included!).
Default: size of
.I input-file
divided by
.IR block-size .
.TP
.B -R
Reverse reading direction, i.e. from
.I end-block
(excluded) to
.I start-block
.TP
.BI -G " good-range"
Only try to read blocks within
.I good-range
blocks from an already successfully read block.
.TP
.BI -F " failed-range"
Extends -f to also skip any block within
.I failed-range
blocks of a block to be skipped as specified by -f.
.TP
.B -T
Also avoid blocks, that were successfully read, but took an unusually
long time to read. In case of growing defects, these blocks can
mark the boundaries of defective regions. This options makes -A, -S
and -F treat such blocks as defective.
.TP
.BI -J " jump-after-blocks"
Randomly jump across the disc after reading
.I jump-after-blocks
blocks in both directions. This might be useful to scan discs with scattered defects.
In jump mode -S causes myrescue to jump to a new block upon the first
failed sector or upon hitting a sector to be skipped as specified by
-f, -G or -F.
.TP
.BI -U " usb-device-file"
(Linux-specific feature) Perform a bus reset for the specified
.I usb-device-file
after every failed read attempt.
Certain faulty SD cards will disappear completely from the bus after a read
error occurs and the USB reader has to be reset completely
in order to continue.
.TP
.BR -h ", " -?
Display usage information.
.SH RECOMMENDED PROCEDURE
NOTE: In data recovery every case needs special consideration and a
specific approach - mindlessly running procedures is a bad idea. So
consider the following an example, keep a close eye on the process and
be prepared to stop and reconsider if anything unusual happens. And
once again: If you are feeling unsure, stop and ask someone
experienced for assistance.
.IP \(bu
Make sure you have sufficient disk space for twice the whole
partition (complete partition size, not just the used amount of data)
plus some space for the block bitmap (1 byte per block). Of course
this should NOT be on the damaged disc.
.IP \(bu
Determine the hardware block size (CRC/ECC unit) of your
harddisk. This may be found out from hdparm, some entries in
/proc/ide/hd? or on the web. I have not yet checked whether
this is possible with an ioctl. If you have, please let me
know.
.IP \(bu
Start a skip mode run with one retry per block to first copy
the undamaged area.
.IP \(bu
Start a normal run with one retry per block to copy the
remaining skipped blocks. You may try to use -f 1 to skip the
damaged blocks from the first run.
.IP \(bu
Repeat until the number of errors seems to have converged.
Try waiting a couple of hours between the retries.
.IP \(bu
Repeat this with higher retry counts and wait for convergence.
.IP \(bu
.B Make a copy of the rescued data
and run fsck on it. The copy is important! Running fsck is risky if
blocks containing filesystem structures (superblocks, directories,
inodes, journal, ...) are missing. Sometimes the well-meant attempt to
correct the filesystem can damage the image file, so always work on a
copy.
.IP \(bu
Mount the filesystem (if copied to a file: via loopback) and check
your data. If directory information has been destroyed, fsck moves
unidentifiable file fragments to lost+found, so you should also check
this location.
.PP
It may help to try reading non-defect areas in between to allow the
drive to recalibrate.
.PP
The developers are glad to hear about your experiences. Please post
them to the
.B Experiences
forum on the Sourceforge Project page. Thank you!
.SH KNOWN BUGS
The handling of the
.I bitmap-file
currently relies on the filesystem semantics, that when
.BR lseek (2)
ing beyond the end of file and then writing, the space in between is
filled with zero-bytes.
.PP
The block bitmap maxes out after 127 failed read attempts.
.SH AUTHORS
Kristof Koehler <kristofk@users.sourceforge.net>,
Peter Schlaile <schlaile@users.sourceforge.net>
.SH SEE ALSO
.BR dd (1),
.BR dd_rescue "(no manpage?)"
.PP
http://www.google.de/search?q=data+recovery
.PP
http://myrescue.sourceforge.net/