====== Clone HDD or flash disks ====== ===== Whole disk ===== dd if=/dev/sda of=hdd.img dd if=hdd.img of=/dev/sda ===== One partition ===== dd if=/dev/sda1 of=hdd.img dd if=hdd.img of=/dev/sda1 ===== One partition ===== dd if=/dev/sda1 of=hdd.img dd if=hdd.img of=/dev/sda1 ===== CD ===== dd if=/dev/cdrom of=/mnt/cdbackup.iso dd if=/mnt/cdbackup.iso of=/dev/cdrom ===== Over network ===== Clone drives over a network:\\ dd if=/dev/sda | ssh username@host "dd of=/dev/sda" Dump an image over a network:\\ dd if=/dev/sda | ssh username@host "dd of=/mnt/hdd.img" Clone a networked drive onto yours:\\ ssh username@host "dd if=/dev/sda" | dd of=/dev/sda Clone a networked image onto yours:\\ ssh username@host "dd if=/mnt/hdd.img" | dd of=/dev/sda ===== Copying MBR ===== [[http://www.cyberciti.biz/faq/howto-copy-mbr|src]]\\ MBR Total Size = 446 + 64 + 2 = 512 * 446 bytes - Bootstrap. * 64 bytes - Partition table. * 2 bytes - Signature. 512 vs 446 Bytes: * Use 446 bytes to overwrite or restore your /dev/XYZ MBR boot code only with the contents of $mbr.backup.file. * Use 512 bytes to overwrite or restore your /dev/XYZ the full MBR (which contains both boot code and the drive's partition table) with the contents of $mbr.backup.file. **dd command to copy MBR (identically sized partitions only)** Type dd command as follows:\\ dd if=/dev/sda of=/dev/sdb bs=512 count=1 Above command will copy 512 bytes (MBR) from sda to sdb disk. This will only work if both discs have identically sized partitions. **dd command for two discs with different size partitions** dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1 Now to restore the image to any sdb:\\ dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1 ** example: 32Gb to 8Gb**\\ Given: * sdc: 32Gb with sdc1=4Gb, sdc2=4Gb, and 23Gb of free space. * sdd: 8Gb Count number of blocks to copy: 8015282176/512 = 15654848 Create image file: sudo dd if=/dev/sdc of=jr1.img count=15654848 Write image file: sudo dd if=jr1.img of=/dev/sdd ===== Watching Progress ===== First, find out the process id of the dd process by running the following in the new virtual terminal. $ pgrep -l '^dd$' 8789 dd To send the USR1 signal to the dd prcoess: $ kill -USR1 8789 $ Note that as soon as the USR1 signal is detected, dd will print out the current statistics to its STDERR. $ dd if=/dev/random of=/dev/null bs=1K count=100 0+14 records in 0+14 records out 204 bytes (204 B) copied, 24.92 seconds, 0.0 kB/s