While I was switching distros, I accidentally broke a partition. I’m almost certain that all the data is there, but it doesn’t have a filesystem (I used ext4). Is there anything I can do to fix it, similar to changing the file extension without changing the contents. PS: It’s a data partition. I was trying to resize it, accidentally also moved it to the left, found out that it was taking forever to move it, so I cancelled it. Finished the move to the left operation (I think), but it threw up an error about the filesystem. I don’t remember what it was, though.

Thanks to everyone who suggested Testdisk. It worked almost perfectly.

  • Depends on how you “broke” it.

    First step is to back up whatever data is there. Boot into a rescue distro like GRML dd the block device to an external hard drive.

    If you nuked the partition table, there may be additional work to rebuild it if you used GPT rather than MBR. But gdisk should also tell you if there are backups, which would make your life way easier.

    If you still have a partition (like /dev/sda1) but the mount command claims that it cannot find a valid ext signature, you might be able to simply use mkfs.ext4. It’s counterintuitive, but this isn’t destructive and will recreate the filesystem leaving the data alone. And if it does turn out to be destructive, that’s why you have your backup.

    To recover from the backup, you can use scalpel or photorec from the testdisk package. Photorec holds your hand and can be run in read-only mode. Caveat: These tools work by looking for specific file headers and makes a best guess as to where it’ll end (if the format doesn’t have a defined footer). This means that you won’t be able to recover the filename and other metadata.

    In the car now, but I can respond with more detailed steps if your other options don’t pan out.