I'm guessing it's a sparseness problem, and I don't see any way to make
testdisk preserve sparseness when recovering a file that way. Testing whether those recovered files are potentially sparse (contain long blocks of zeros) is
not a simple matter. Restoring the sparseness of a file requires making a copy of it, so you would have to try that on a few files at a time before you have filled all your space.
To make a sparse copy of a file, you can use either
cp with the "--sparse=always" option, or
rsync with the -S (--sparse) option, e.g.:
Code:
rsync -Sv oldfile newfile
ls -ls oldfile newfile
If the output from "ls" shows that newfile uses significantly fewer disk blocks than does the original file, then you can "mv newfile oldfile" to save the space. If not, just "rm newfile" and proceed to the next.
I know that's a bit painful. A long time ago I did write a C program to test whether a file might be a candidate for being made sparse and make a sparse copy if so, but it's dependent on specific filesystem features and I'm not sure it even works any more.