Linux: How to backup hard disk partition table (MBR)

by on July 10, 2006 · 12 comments· LAST UPDATED September 3, 2007

in , ,

If you don't want to take any chances with your data, it is recommended that you backup hard disk partition table. Last Friday I was discussing some issues with one of our customer and he pointed out me dd command.

Backup MBR with dd command

dd the old good command which now backup partition tables even writes CDs ;). Backing up partition is nothing but actually backing up MBR (master boot record). The command is as follows for backing up MBR stored on /dev/sdX or /dev/hdX :
# dd if=/dev/sdX of=/tmp/sda-mbr.bin bs=512 count=1

Replace X with actual device name such as /dev/sda.

Now to restore partition table to disk, all you need to do is use dd command:
# dd if= sda-mbr.bin of=/dev/sdX bs=1 count=64 skip=446 seek=446

dd command works with Solaris, HP-UX and all other UNIX like operating systems. Read man page of dd for more info.

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 12 comments… read them below or add one }

1 Wartin April 15, 2010 at 1:37 pm

dd if= sda-mbr.bin

it has a blank space after =, it should read

dd if=sda-mbr.bin of=/dev/sdX bs=1 count=64 skip=446 seek=446

Reply

2 PT August 10, 2010 at 5:14 am

This advice does not work if you have an extended partition table.

Reply

3 VernDog January 26, 2011 at 4:26 pm

Wrong! This method DOES WORK with extended , primary partitions. I’ve used it all the time, to both backup & restore. Just remember to backup MBR if you add any changes to partitions.

Reply

4 brendan December 1, 2012 at 11:29 pm

No. He’s right. The MBR lists whether a partition is active, its type, start point and number of sectors within the partition. MBR lists this for a maximum of 4 partitions. This not include logical partitions. They are described within the extended partition. They are not described in the MBR.

Reply

5 Jack October 9, 2010 at 9:47 am

PT,

You can use sfdisk to backup extended partition table.

sfdisk -d /dev/sdX > backup-sdX.sf

Restore:

sfdisk /dev/sdX < backup-sdX.sf

Reply

6 jns August 22, 2011 at 6:07 am

The restore line corrupted my entire partition table…
beware, i guess…

Reply

7 victor September 3, 2011 at 12:18 pm

jns, it could be because only one seek is needed.
there are 446b of MBR, 64b of Partition Table and 2 as end (0x55aa). {= 512b}
if skip and seek aren’t synonimous, you seek 446 + 446.
thus, command line must be
dd if=sda-mbr.bin of=/dev/sdX bs=1 count=64 skip=446
or
dd if=sda-mbr.bin of=/dev/sdX bs=1 count=64 seek=446

Reply

8 victor September 3, 2011 at 12:45 pm

i’m sorry, i’m mistake. error coud be if mbr is all zero. then you must add conv=notrunc for no file optimization.
ej:
2GB file
dd if=/dev/zero of=afile bs=1 seek=2GB count=1 (file size in hd<1kb)
or
dd if=/dev/zero of=afile bs=1 count=2GB (file size in hd=2gb)

size must be specific in bytes, 2gb is only for easy read.
note: a little bs spend more time

Reply

9 Mr_T September 13, 2011 at 7:31 pm

Victor,
In your first post, could you clarify the units you are using for mbr and the partiton table and what is the “2 as end” means. Its not intuitive to the uninitiated.

Thanks

Reply

10 brendan December 1, 2012 at 11:42 pm

He’s talking about bytes. 446 bytes of Bootstrap code, then 4 partition entries x 16 bytes = 64 bytes, then 2 bytes of signature (a 16 bit number = 0101010110101010). This is 55aa in hex and 21930 in decimal.

Reply

11 brendan December 1, 2012 at 11:44 pm

446 + 64 + 2 = 512 bytes :)

Reply

12 Marek December 7, 2011 at 11:19 am

What about GPT ?

Reply

Leave a Comment

Tagged as: , , , , ,

Previous post:

Next post: