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

last updated in Categories Debian Linux, File system, Gentoo Linux, Howto, Linux, RedHat/Fedora Linux, Suse Linux, Sys admin, Tips, Troubleshooting, Ubuntu Linux, UNIX

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.


Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

14 comment

  1. 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

    1. 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.

      1. 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.

  2. PT,

    You can use sfdisk to backup extended partition table.

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


    sfdisk /dev/sdX < backup-sdX.sf

  3. 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

    1. 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 🙂

  4. 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

  5. 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.


    1. 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.

  6. 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

    Have a question? Post it on our forum!