This doesn't seem to work for me, probably because the mmap it uses doesn't work very well when the file contains bad blocks.
I also found:
and will probably pursue this, but it'll take quite a while.
Also, there's a reference in the gzip documentation to:
If a .tar.gz file is damaged, files beyond the failure point cannot be recovered. (Future versions of gzip will have error recovery features.)
so maybe this will be available at some point. I'd love to know if someone is actually working now on this.
On Friday, August 8, 2003, at 01:30 AM, RaphaŽl Marmier wrote:
Try using dd to grab all possible bits of that file:
dd if=/path/tothe/file of=/path/to/newfile conv=sync,noerror >ddlog.txt 2>&1
you get the log of all errors and faulty blocks in ddlog.txt
This will make a copy of the file with unreadable blocks converted to blank. Then you should fix the compresssed archive with the proper utility (although I don't know exactly how), then you should be able to untar it. Maybe the information on which files where lost will even be available.
If it turns out you didn't loose that much, it will spare you the effort to read the disk harder. In case you really lost damn imporant stuff, you can send the disk to a data recovery company, but it costs $$$$$$...
Hope this helps
Le Vendredi, 8 aoŻ 2003, ŗ 01:33 Europe/Zurich, Richard Johnson a ťcrit :
I have a 1.5Gb file stored on a FreeBSD 4.8 disk drive and the system is giving me hard read errors when I try reading it. It appears as though this disk has a few bad blocks. :( Unfortunately, it's a compressed tar file and I (stupidly!) erased the file from the original computer before untar'ing it here and finding the errors! I'd like to recover as much as possible of this file before writing off the entire thing.
I looked at /usr/src/sys/dev/ata/ata-disk.c and found the retry count was set to 3. I changed it to 10. After the first error (which is, indeed, reported 10 times) the system reports that it's going into PIO mode and I still hear the same amount of hammering on the drive after that and only one error message produced.
Is there some way I can force the system to retry 10 or more times for each and every block? Maybe there's some other utility I can use which tries harder to read the blocks?
ANY pointers to information would be greatly appreciated.
[EMAIL PROTECTED] mailing list
To unsubscribe, send any mail to "[EMAIL PROTECTED]"
_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"