The easiest way is to use SSH and DD or a combination of netcat. SSH will be a little slower due to encryption but is the most secure way (on two older systems the average clone speed is about 40-50MB/s). This is also OS independent as it doesn't matter what the source OS is because you are literallly cloning the drive so you retain the partition table and settings.
Clone HDD using SSH and DD
dd if=/dev/sourcedrive | ssh user@yourhostname.com "dd of=/dev/destinationdrive"
However especially in Linux you'll want to do a fsck on all partitions on the remote drive or it probably won't boot because the filesystem recognizes the partitions are not right due to the different drive sizes. More info here.
Note you will need to use sudo or root on both systems. I also like to use a live CD/USB/Network on the remote system so that the operation can completely cleanly (especially helpful if that would be the only disk device on the remote system).
Clone HDD using netcat (nc)
This is the faster but less secure way someone could accidentally or maliciously send random/wrong data to the remote nc causing corruption. There is of course the risk of eavesdropping where an attacker could essentially have a copy of your cloned hard drive too.
First setup the remote server.
Remote Server Setup
nc -l 29000|dd of=/dev/destinationdrive
This tells nc to listen on port 29000 and write the data to /dev/destinationdrive
Now
we are ready to push the source drive from the source server.
Source Server
dd if=/dev/sourcedrive| nc remoteserver 29000
This tells dd to take data from /dev/sourcedrive and send it to an nc server at remoteserver on port 29000
linux, clone, harddrive, systemthe, easiest, ssh, dd, netcat, slower, encryption, mb, os, doesn, literallly, cloning, retain, partition, settings, hdd, dev, sourcedrive, user, yourhostname, quot, destinationdrive, ll, fsck, partitions, filesystem, recognizes, sizes, info, sudo, usb, cleanly, disk, nc, maliciously, corruption, eavesdropping, attacker, essentially, cloned, server, remoteserver,