You could try the utility gzrecover and then extract the recovered archive with cpio.
It has assisted with recovering corrupted archives in the past, but your mileage may vary. I'm having an issue where it can't recover an archive for me, so fair warning.
EDIT: By a mod threatening me violently with a knife, I'll add some details how I recovered archives beforehand. (I'm kidding. Don't hurt me, @Scott!)
You can install both packages by using
sudo apt-get install cpio gzrt
After you've ensured both packages are installed, lets get to work.
First, put your archive where you don't mind the data being extracted. From there, you can run
gzrecover will likely take some time, depending on how large the archive is. However, with any luck, you'll see "broken-archive.tar.recovered" in the same directory after the operation has completed.
The recovered archive has likely sustained some kind of damage as well; this is where cpio comes in handy. It should already be installed on your system.
To extract the recovered archive, use
cpio -F broken-archive.tar.recovered -i -v
Be aware that cpio will spew out an extensively large amount of information during this time. I recommend you do this on a separate tty entirely instead of a terminal on your X session. To do this, you can just press CTRL+ALT+F1 and your screen will switch to a terminal. To return to your X session, press CTRL+ALT+F8 (may vary, but usually is F7-9).
The process of extracting the recovered archive is also going to be rather intensive. As cpio is not optimized for use with multiple cores, it will stick to one core. Whatever core it happens to stick on, it will probably pin the core at 100% usage. If you have a dual-core machine, you might have to not use your computer for a while.
Be forewarned that this process could actually take several days especially considering the size of the archive. Either find a different machine to offload this work onto (slower CPU's will make this take longer), plan to not use your computer for a while, or just brace for your system choking during work. In addition, if you do run this within a terminal on your X session, you'll likely pin a second core to 100%. If you're an advanced user, you can use the
taskset command to assign the process(es) to a specific core. However, that is outside of the scope of my answer.
I wish you the best of luck.