[comp.sys.amiga.misc] File Recovery on an 80 MB partition

kent@swrinde.nde.swri.edu (Kent D. Polk) (02/14/91)

A co-worker accidentally overwrote two files with tiny ones with the
same names. Needless to say, I need the originals. The data can't be
regenerated due to a physical change in the device which produced the
event data. (ok... so non-destructive examinations aren't always
completely non-destructive :^).

The originals are waveform files about 4 MB long and the new files are
about .5 MB.  (Pete Goodeve: I know... it's being fixed - will be using
the ASL filerequester! - BTW, any comments?)

I ran DiskSalv, but I guess the file headers got trashed, since no
duplicate filenames corresponding to the ones I wanted were retrieved.
Each waveform event has a repeatable header that I could recognise if I
saw it.

Question: is there a utility (like the old Diskzap) that can work on an
80 MB partition? If so, can I follow a thread & designate it to be
moved to a new file - fsdb fashion? Or any fashion really? I can even get
by with most of the data. 

re backups: Yes we backup. No, the files weren't on the backup since
they were overwritten about a minute after they were closed :^(

Thanks much,
Kent Polk: Southwest Research Institute (512) 522-2882
Internet : kent@swrinde.nde.swri.edu
UUCP     : $ {cs.utexas.edu, gatech!petro, sun!texsun}!swrinde!kent

daveh@cbmvax.commodore.com (Dave Haynie) (02/20/91)

In article <1276@swrinde.nde.swri.edu> kent@swrinde.nde.swri.edu (Kent D. Polk) writes:

>Question: is there a utility (like the old Diskzap) that can work on an
>80 MB partition? 

I use DiskX for DiskSalv development.  It can edit tracks on any FFS or SFS
disk I have tried to date. 

>If so, can I follow a thread & designate it to be moved to a new file - fsdb 
>fashion? Or any fashion really? I can even get by with most of the data. 

Problem is, the only thread under FFS is in the file header.  Well, not all
true.  The first 36K or so of a file is referenced by pointers in the file
header.  The next 36K will be referenced by a file extension block, which in
turn points to the next file extension block, and so on.  Since you wrote over
the existing file, the current header should be on the same block the old one
was on.  You might be able to find an the first extension block referencing
that header block, assuming the OS hasn't overwritten it.  That will lead you,
by subsequent extension block pointers, to the next extension block, and so
on.  I don't know of any easy way to get DiskX to do this; you can imagine 
what the "difficult" way involves.

I have been thinking of doing something with loose extension blocks in future
versions of DiskSalv.  Well, perhaps a little more than just thinking about
it....

>Kent Polk: Southwest Research Institute (512) 522-2882


-- 
Dave Haynie Commodore-Amiga (Amiga 3000) "The Crew That Never Rests"
   {uunet|pyramid|rutgers}!cbmvax!daveh      PLINK: hazy     BIX: hazy
	"What works for me might work for you"	-Jimmy Buffett

kent@swrinde.nde.swri.edu (Kent D. Polk) (02/20/91)

In article <19122@cbmvax.commodore.com> daveh@cbmvax.commodore.com (Dave Haynie) writes:
>In article <1276@swrinde.nde.swri.edu> kent@swrinde.nde.swri.edu (Kent D. Polk) writes:
>
>>Question: is there a utility (like the old Diskzap) that can work on an
>>80 MB partition? 
>
>I use DiskX for DiskSalv development.  It can edit tracks on any FFS or SFS
>disk I have tried to date. 
>>If so, can I follow a thread & designate it to be moved to a new file - fsdb 
>>fashion? Or any fashion really? I can even get by with most of the data. 
>
>Problem is, the only thread under FFS is in the file header.  Well, not all
[...]
>by subsequent extension block pointers, to the next extension block, and so
>on.  I don't know of any easy way to get DiskX to do this; you can imagine 
>what the "difficult" way involves.

We pulled up DiskX 2.2 (Steve Tibbett) and located about 400 of the
desired blocks so far - by hand. DiskX can copy, block-by-block from one
place to another, so we started trying to do so. Unfortunately, DiskX
only knows how to save 488 byte blocks & gets confused when reading from
512 byte blocks.

>I have been thinking of doing something with loose extension blocks in future
>versions of DiskSalv.  Well, perhaps a little more than just thinking about
>it....

Believe me, it would be much appreciated.

Back to the the task at hand: We are currently following two paths:  a
program to dump a list of block numbers (specified by a file), and one
to dump a range of blocks to a file. Then a filter to search for the
patterns and extract the data to another file. I would like to track
the extension blocks, but either DiskX had trouble following them, or
we did. (Still have 3MB more to go too).  Right now we are trying to
figure out how to 'convert' a trackdisk test program to work with the
2091. Hopefully will have something working soon.

BTW, where is this stuff documented? I've gotten bits and pieces from
AmigaMail, RKM's, examples on Fish Disks.  Can we just substitute the
device, unit num, etc. and use "trackdisk" calls?

Do you happen to have:

1) an example of how to find the device & unit number from the system
lists, given a partition name...? I know how to determine the numbers
by hand - just wanted to specify the partition name to make it a bit
more general.

2) an example of tracking the extension blocks (given a known one)?
(though I think we have this one pretty much figured out)

--------------------------------------

This has been a very educational experience. Provided one of
those golden opportunities to learn some of this stuff :^(

"Warming up for gpib.device" Polk
Internet : kent@swrinde.nde.swri.edu
UUCP     : $ {cs.utexas.edu, gatech!petro, sun!texsun}!swrinde!kent