TL;DR: Use parted rescue
Last Sunday evening, I accidentally deleted the partitions of my laptop while it was running. Initially, I wanted to remove all partitions from an SD card and create a single partition spanning the whole card. Absent-mindedly I went
... sudo parted /dev/sda ... rm 1 ... rm 2 ... rm 3 ... ... mkpart ... 0% ... 100% ... quit ...
Later that evening, when I restarted the computer, I realized what I did.
/dev/sda was the internal disk of my laptop. I hadn’t even thought about which
device the SD card was. The correct device would have been
tab-completion was doing its part: I probably did
sudo parted /dev/sd<TAB><TAB> to see which disks
are there, but it automatically completed it to
sda after the first
Ok, I’ve screwed up. How to fix this? Luckily, I didn’t format the new
partition. I wanted to let my digital camera do the job. (How should I know what
file system it needs: fat? fat32? exfat? ntfs?) However, not formating the new
partition is key here. During my self-destruct
parted-session, I deleted the partitions from the partition table. But still, it should
have left the rest of the disk untouched, including the actual contents of the
partitions, the file systems, and all my data. Theoretically, I only need to
recreate the same partitions with the exact same sizes, and everything should
be back to normal (without using a backup).
parted was my enemy here, but as it turns out,
parted is also your best
friend when you want to restore deleted partitions.
When you boot a live Linux system from a USB stick, you can operate on the fried disk with parted.
The task is to recreate the same partitions. Well, I didn’t remember the exact sizes and positions of my partitions. (Should I keep a copy of my partition table in my wallet since I don’t like to pay attention when I work with parted?)
You could try to at least match the beginning of the partitions and ask the contained file system how
large it is. However, there is a much easier way.
parted ships with the
command. The rescue command asks for rough limits were the beginning of a
partition was and scans the space for magic blocks and file system headers. When
it finds something, it directly asks whether it should recreate the previous partitions. See
Within 2 minutes, everything was back to normal.