≡ Menu

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

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.

Share this on:

{ 14 comments… add one }

  • Wartin April 15, 2010, 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

  • PT August 10, 2010, 5:14 am

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

    • VernDog January 26, 2011, 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.

      • brendan December 1, 2012, 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.

  • Jack October 9, 2010, 9:47 am


    You can use sfdisk to backup extended partition table.

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


    sfdisk /dev/sdX < backup-sdX.sf

  • jns August 22, 2011, 6:07 am

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

  • victor September 3, 2011, 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
    dd if=sda-mbr.bin of=/dev/sdX bs=1 count=64 seek=446

    • felipe November 17, 2015, 11:39 pm

      from man dd
      seek=N skip N obs-sized blocks at start of output
      skip=N skip N ibs-sized blocks at start of input

      so, you need seek to start from byte 446 of the disk and skip to ignore first 446 byte of the backup image. skip and seek are, definitely, not synonymous :)

  • victor September 3, 2011, 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.
    2GB file
    dd if=/dev/zero of=afile bs=1 seek=2GB count=1 (file size in hd<1kb)
    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

  • Mr_T September 13, 2011, 7:31 pm

    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.


    • brendan December 1, 2012, 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.

      • brendan December 1, 2012, 11:44 pm

        446 + 64 + 2 = 512 bytes :)

  • Marek December 7, 2011, 11:19 am

    What about GPT ?

  • Ajinkya October 25, 2014, 6:10 pm

    Actually I run the command dd if=/dev/sda of=/dev/sdb by mistake so I think my partition table is get deleted so may I get help to recover it

    Thanks in advance

Leave a Comment

   Tagged with: , , , , ,