Email: bknpk@hotmail.com Phone: +972-54-7649119

Hard disk clone using dd comand from colinux.



  1. The purpose of this page is to show a procedure how to clone a windows XP system (drive c) partition, using dd command from colinux.
    Such a procedure has to be tested first. I use colinux, because attaching a new disk to it, is merely a file in the host operating system, edit the colinux configuration file and mount it on colinux.

  2. colinux has the ability to access the host operating system disks. So my intention is to use it to clone the XP disk, using dd command.
    But first I must get my hands wet, with a small disk, making sure I really know well the procedure.

  3. Also since the XP system disk is presently very large, I need first to practice the procedure on a small disk.
    For that colinux is a good system to exercise backup and restore, as it it easy to work with its virtual disks.

  4. The drill consists of the following phases:

    1. Create a small disk for colinux. Create a device and mount it. Put some text files (can be any type of files, but for the exercise, I use something I can easily check its integrity) on it.
    2. Clone the disk. Remove the disk and erase its data.
    3. Create a larger disk and restore data, from the former disk, on it.
    4. Compare each file and see that the disk was completely restored.



  5. In order to create a disk for colinux, I need to create a file with all 0 in it:
    dd if=/dev/zero of=TryDisk count=1024 bs=1024

    Check its content:
    od -c TryDisk
    0000000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
    *
    4000000
    -rw-r--r-- 1 root root 1048576 2012-02-04 13:19 TryDisk

    Add the following line to the colinux configuration file:
    #Trial for backup
    cobd4="d:\Pini\tmp\TryDisk

    Now prepare it for mount and mount it:
    mkfs.ext3 /dev/cobd4
    mount /dev/cobd4 /mnt/Try

    Check that all went okay:
    cd /mnt/Try/
    df -h .
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/cobd4           1003K   17K  935K   2% /mnt/Try

    Backup the disk
    Create an image to a disk of colinux. My host, windows XP, has two partitions for the hard disk namely c and d. C is for the windows and d is for data. On colinux I mounted each to /mnt/pcC and /mnt/pcD.
    dd if=/dev/cobd4 | gzip -c > /mnt/pcD/Pini/tmp/back_1.img.gz

    If a USB portable disk is preferred, plug it and re-boot colinux adding to command the reference to the USB disk:
    colinux-daemon.exe -t nt cofs0=c:\ cofs1=d:\ cofs2=e:\ @example.conf

    mount it, before usage:
    mount -t cofs cofs2 -o uid=bob,gid=bob /mnt/pcE
    At the end un-mount the USB disk:
    umount /mnt/pcE

    Create an image and pass it to another computer using ssh:
    dd if=/dev/cobd4 | gzip -c - | ssh user@192.168.0.17 "dd of=back_1.img.gz"

    One may wish to save the CPU time of encrypt, which ssh uses (on a very large disk back, as in my case 80GB, this may be significant time saving):
    nc -l 2222 > back_1.img.gz #listen on the remote linux
    dd bs=1M if=/dev/cobd4 | gzip -c - | nc 192.168.0.17 2222

  6. Shutdown colinux. Delete the virtual disk by deleting the file TryDisk, using widows host operating system.
    Create a new file for the new disk:
    dd if=/dev/zero of=TryDisk_2 count=2048 bs=1024
    2097152 2012-02-04 13:53 TryDisk_2

    #Trial for backup - modify the colinux configuration file.
    cobd4="d:\Pini\tmp\TryDisk_2"
    #restore data
    gunzip -c /mnt/pcD/Pini/tmp/back_1.img.gz | dd of=/dev/cobd4
    #list files
    ls -lart /mnt/Try/

    drwxr-xr-x 7 root root   4096 2012-02-04 20:30 ..
    drwx------ 2 root root  12288 2012-02-04 20:41 lost+found
    -rwxr-xr-x 1 pini pini   3251 2012-02-04 20:45 gm_asp.unx
    -rwxr--r-- 1 pini pini    193 2012-02-04 20:45 conv.unx
    -rw-r--r-- 1 pini pini     55 2012-02-04 20:46 Zefat.txt
    -rw-r--r-- 1 pini pini    528 2012-02-04 20:46 yd.txt
    ...
    df -h .
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/cobd0            2.0G  1.7G  264M  87% /


    #check that file are the same with some text compare utility.
    for f in `ls`;do perl ~/bin/cmp_diff.pl $f ~/Home_2/GeneralInfo/youtube/;done

  7. Note that in a real crash the restore will be done differently:
    Once your disk is totaly lost, you boot from a small linux on CD. Find its IP and from the remote linux, which has the backup image issue the following command:


    zcat tmp/back_1.img.gz | ssh user@192.168.0.16 'dd of=/dev/sda'

    Note /dev/sda is whatever the mini linux rescue disk recognized your new disk.

  8. The backup may take a very long time to complete. dd does not issue a progress message. From checking the manual pages on dd:
    "Note that sending a SIGUSR1 signal to a running 'dd' process makes it
    print to standard error the number of records read and written so far,
    then to resume copying.

    $ dd if=...of=...& pid=$!
    $ kill -USR1 $pid;"

    This output was received on debian machine:
    988937+0 records in
    988936+0 records out
    506335232 bytes (506 MB) copied, 111.85 s, 4.5 MB/s

    Under bash one can use a while loop to print progress of dd:
    while ps -p $pid > /dev/null ; do date ; kill -USR1 $pid; sleep 10;done; send_mail.unx

  9. A clone back is done on cygwin for a system window XP partition using compression. The results when using compression programs such as gzip and bzip2, are shown in the following page.

V

 


Home

Hard disk clone using dd command from
rip linux to backup windows 7.






Search This Site


Feedback This Site




new pages on this site