Probably the funniest way of migrating a fully functional system is doing it while the system is up and running. You can migrate a live system to another remotely machine booted with a recovery cd that can be used to do a P2V (Physical to Virtual) or live system migration to other physical one.
To achive a network migration we can use the TCP/IP swiss army knife, NetCat (nc).
First, boot a virtual machine or physical one with a recovery cd (like wifislax), be sure to have a disks with same amount of space as the master, and set up the network parameters on this machine
# ifconfig eth0 xxx.xxx.xxx.xxx netmask yyy.yyy.yyy.yyy up
where xxx is in the same network than current live system.
Now, run this command in the slave machine (the one where all the data will be copied):
slave ~ # nc -p 2222 -l |bzip2 -d | dd of=/dev/sda
we use bzip2 to compress the data to send over network and save time and bandwidth, or use only dd without any compression.
Now, in the master machine (the one with the fully functional system) run the next command to send all the data stored in the disk.
master ~ # bzip2 -c /dev/sda |pv -pb | nc xxx.xxx.xxx.xxx 2222
where xxx is the IP of the slave machine that we set before in the slave machine.
You have more options than bzip, like using tar with some filters to exclude filesystems :
(remember first to create a filesystem in the primary disks in the slave machine and mount it).
slave ~ /mnt/disk # nc -p 2222 -l | tar xjv master ~ / # tar -cj / --one-file-system --exclude=/dev --exclude=/proc --exclude=/var/run --exclude=/var/lock --exclude=/usr/share/doc/kde --exclude=/var/spool/postfix/private |pv -pb | nc xxx.xxx.xxx.xxx 2222
As a resume, without less options:
slave ~ /mnt/disk1 # nc -p 2222 -l | tar xzv master ~ # tar -czf - / |nc xxx.xxx.xxx.xxx 2222
Try your options to move the data (dd, tar, bzip2, zip) but always use the same tool in the other side ;).