Recovering ext4 superblocks
Unfortunately, I was unable to recover the file system and had to resort to lower-level data recovery techniques (nicely summarised in Ubuntu's Data Recovery wiki entry), of which Sleuth Kit proved most useful.
Marking as answered for cleanliness' sake.
This may be outdated already, but a few suggestions:
If you are absolutely sure that the original blocksize is 4096, as claimed by testdisk
,
you can rewrite the superblocks on the disk using mke2fs -S
. From man:
-S Write superblock and group descriptors only. This is useful if all
of the superblock and backup superblocks are corrupted, and a last-
ditch recovery method is desired. It causes mke2fs to reinitialize
the superblock and group descriptors, while not touching the inode
table and the block and inode bitmaps. The e2fsck program should be
run immediately after this option is used, and there is no guarantee
that any data will be salvageable. It is critical to specify the
correct filesystem blocksize when using this option, or there is no
chance of recovery.
If you are unsure about the correct blocksize, use mke2fs -n -b 2048 /dev/sdb1
and try all the superblock backups this command gives, and after that the same but using the last blocksize 1024.