Backup an entire hard disk
using dd command
The ' dd ' command is one of the original Unix
utilities and should be in everyone's tool box. It can strip
headers, extract parts of binary files and write into the middle
of floppy disks; it is used by the Linux kernel Makefiles to
make boot images. It can be used to copy and convert magnetic
tape formats, convert between ASCII and EBCDIC, swap bytes, and
force to upper and lowercase.
For blocked I/O, the dd command has no competition in the
standard tool set. One could write a custom utility to do
specific I/O or formatting but, as dd is already available
almost everywhere, it makes sense to use it.
Like most well-behaved commands, dd reads from its standard
input and writes to its standard output, unless a command line
specification has been given. This allows dd to be used in
pipes, and remotely with the rsh remote shell command.
Unlike most commands, dd uses a keyword=value format for its
parameters. This was reputedly modeled after IBM System/360 JCL,
which had an elaborate DD 'Dataset Definition' specification for
I/O devices. A complete listing of all keywords is available
from GNU dd with
# dd --help
For more options check dd
man
page
Using dd you can create backups of an entire harddisk or just a
parts of it. This is also usefull to quickly copy installations
to similar machines. It will only work on disks that are exactly
the same in disk geometry, meaning they have to the same model
from the same brand.
full hard disk copy
dd if=/dev/hdx of=/dev/hdy
dd if=/dev/hdx of=/path/to/image
dd if=/dev/hdx | gzip > /path/to/image.gz
Hdx could be hda, hdb etc. In the second example gzip is used to
compress the image if it is really just a backup.
Restore Backup of hard disk copy
dd if=/path/to/image of=/dev/hdx
gzip -dc /path/to/image.gz | dd of=/dev/hdx
MBR backup
In order to backup only the first few bytes containing the MBR
and the partition table you can use dd as well.
dd if=/dev/hdx of=/path/to/image count=1 bs=512
MBR restore
dd if=/path/to/image of=/dev/hdx
Add "count=1 bs=446" to exclude the partition
table from being written to disk. You can manually restore the
table.