Here is an easy way to restore things if you have the starting point and size of each partition using fdisk.
In this example we pretend that /dev/sda was wiped out, but the running system still has the info in /sys/class/block/sda.
Go into each partition and record the “start” and “size”.
cd /sys/class/block/sda/sda1 cat start 2048 cat size 2097152
cd /sys/class/block/sda cat sda2/start 2099200 cat sda2/size 62914560
cd /sys/class/block/sda cat sda3/start 65013760 cat sda3/size 520923740
Create the same 3 partitions at the same starting point and with the same size using fdisk:
fdisk
returns:
Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x8e7672df. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (1-4, default 1): First sector (2048-585524838, default 2048): 2048 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-585524838, default 585524838): 2097152 Created a new partition 1 of type 'Linux' and of size 1023 MiB. Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (2-4, default 2): First sector (2097153-585524838, default 2099200): 2099200 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-585524838, default 585524838): 62914560 Created a new partition 2 of type 'Linux' and of size 29 GiB. Command (m for help): n Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (3,4, default 3): 65013760 Value out of range. Partition number (3,4, default 3): First sector (2097153-585524838, default 62916608): 65013760 Last sector, +/-sectors or +/-size{K,M,G,T,P} (65013760-585524838, default 585524838): 520923740 Created a new partition 3 of type 'Linux' and of size 217.4 GiB.