Hmm. I've never tried to recover from such a situation. However, if you've got valuable data on that disk, I strongly recommend making a complete image of the disk before doing anything else. That means you'll need a device with at least as much free space as your disk has. Then do
dd if=/dev/sda of=/path/to/image.img
That way, if something goes wrong, you won't lose anything.
If you don't have enough space on a single partition, you might be able to work around that issue by doing something like this (WARNING: This is untested):
mkfifo /tmp/dd
dd if=/dev/sda of=/tmp/dd
Then, in another terminal, try this
split --bytes=4G /tmp/dd /path/to/staging/area # adjust size as appropriate
Finally, in a third terminal, you can quickly move the chunks to their permanent home, optionally compressing them first. Do this while dd runs. But whatever you do, make sure it's fast enough so that you don't run out of space in the staging area.
To restore the split files, you can do something like this:
Terminal 1:
mkfifo /tmp/dd
cat /path/to/chunks/dir/1/* /path/to/chunks/dir/2/* > /tmp/dd # List all chunks here
Use zcat instead of cat if you also need to uncompress the chunks.
Terminal 2:
dd if=/tmp/dd of=/dev/sda