How to make disk image with dd on Linux or Unix
How to make disk image with dd on Linux or Unix
How to clone an entire hard disk
The syntax is as follow to make disk image with dd:dd if=/dev/input/DEVICE-HERE of=/dev/OUTPUT/DEVICE-HERE bs=64K conv=noerror,sync
To clone /dev/sdc (500G) to /dev/sdd (500G) in Linux, enter:# dd if=/dev/sdc of=/dev/sdd bs=64K conv=noerror,sync
In this example, I am going to clone /dev/ada0 (500G) to /dev/adb0 (500G) in FreeBSD and make an image using dd. For example:# dd if=/dev/ada0 of=/dev/adb0 bs=64K conv=noerror,sync
Where,
- if=/dev/file : Input device/file.
- of=/dev/file : Output device/file.
- bs=64k : Sets the block size to 64k. You can use 128k or any other value.
- conv=noerror : Tell dd to continue operation, ignoring all read errors.
- sync : Add input blocks with zeroes if there were any read errors, so data offsets stay in sync.
How to clone a partition and make disk image with dd
To clone /dev/sdc1 to /dev/sdd1 with dd and create an image, enter:# dd if=/dev/sdc1 of=/dev/sdd1 bs=128K conv=noerror,sync
Making disk image with dd using live CD/DVD or USB pen drive You can boot from a live cd or USB pen drive. Once booted, make sure no partitions are mounted from the source hard drive disk. You can store disk image on an external USB disk. The syntax is as follows dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=64K | gzip -c > /path/to/my-disk.image.gz In this example, create disk image for /dev/da0 i.e. cloning /dev/da0 and save in the current directory: dd if=/dev/da0 conv=sync,noerror bs=128K | gzip -c > centos-core-7.gz
How to restore system (dd image) The syntax is: gunzip -c IMAGE.HERE-GZ | dd of=/dev/OUTPUT/DEVICE-HERE For example: gunzip -c centos-core-7.gz | dd of=/dev/da0 Tip #1: Not enough disk space locally? Use the remote box You can send the image through ssh and save it on the remove box called
user: dd if=/dev/da0 conv=sync,noerror bs=128K | gzip -c | ssh user 'dd of=centos-core-7.gz' You can see status with dd command as follows: dd if=/dev/da0 conv=sync,noerror bs=128K status=progress | gzip -c | ssh user 'dd of=centos-core-7.gz' Here is how to restore image from local system: The syntax is: ssh user 'dd if=disk.img' | dd of=/dev/sdb ## OR ## ssh user 'dd if=centos-core-7.gz' | gunzip -c | dd of=/dev/sdb ## add status=progress if needed
## ssh user 'dd if=centos-core-7.gz status=progress' | gunzip -c | dd of=/dev/sdb Tip #2: See progress while making an image with dd You need to use GNU/BSD dd with coreutils version 8.24 as follows (pass the status=progress to the dd): dd if=/dev/sdc1 of=/dev/sdd1 bs=128K conv=noerror,sync status=progress