1. Prep machine or VM for the migration. On the destination server, boot with a live CD (CentOS, Debian, etc.). Partition drives.
I am assuming you are using just one partition, adding other partitions is trivial.
2. Mount drive and transfer system
mkdir /media/chroot
mount /dev/sda1 /media/chroot
rsync -az –exclude ‘proc’ –exclude ‘sys’ –exclude ‘dev’ –exclude ‘media’ –exclude ‘mnt’ root@source_server:/ /media/chroot
mkdir /media/chroot/dev
mkdir /media/chroot/proc
mkdir /media/chroot/sys
mount –bind /dev /media/chroot/dev
3. Chroot into system
chroot /media/chroot
mount /proc
mount /sys
mv /boot/grub/device.map /boot/grub/device.map.old
grub-mkdevicemap
update-grub
install-grub /dev/sda
Also make sure to edit /etc/fstab with your new device IDs/partitions. You can view a list of device IDs by doing
ls -l /dev/disk/by-uuid
When you are done, reboot.
3. System show now boot successfully