1. Check the source operating system distribution and architecture.
Launch an AMI in EC2 of the same distribution and architecture. Install rsync and screen on both source and destination:$ yum -y install rsync screen
2. Check disk requirements
If the source distribution has a total disk size of more than the EC2 AMI storage, you'll need to create EBS drives on the EC2 machine.Example:
The source system has the following disk space distribution:
/home - 39 GB
/usr - 16
/var - 11
/opt - 430
rest - 5
If the destination has a root partition of 8 GB, you will have to append EBS volumes for /home (40), /usr (20), /var (15), /opt (440).
Format the partitions. See example below, for /home partition which will be on device /dev/xvdh.
Do this for all devices:
$ fdisk -l #(see how they are labeled, like /dev/xvdh or /dev/sdh, or whatever).
mkfs.ext4 /dev/xvdh #(put the proper device name here)
# mount to temporary location
$ mount /dev/xvdh /media
# sync all files from mountpoint to the new device
$ rsync -avz /home/ /media/
# edit /etc/fstab and put the new device name and the mount point:
$ cat /etc/mtab | grep xvdh #or whatever the device is
# append the line to /etc/fstab, but replace /media to the mountpoint. Eg:
/dev/xvdh /home ext4 defaults 0 0
# remount the partition:
$ mount -o remount,rw /home
3. Create keypairs on the source system.
Copy the public keys to both source and destination /root/.ssh/authorized_keys.# on the source:
$ ssh-keygen -t rsa # answer the defaults, put no password.
$ cat /root/.ssh/id_rsa.pub
# append the content to /root/.ssh/authorized_keys on both source and destination server.
# Copy company public key (through which you access the destination server) also to both source and destination in /root/.ssh/authorized_keys.
4. Create a list of files to exclude, on source in /excluded_files
$ vi /excluded_files# add the following lines
/etc/fstab
/etc/mtab
/etc/sysconfig/network-scripts
/proc
/boot
/sys
/dev
/etc/resolv.conf
/etc/hosts
/etc/conf.d/net
/etc/network/interfaces
/lib/modules
/etc/sysconfig/network
/etc/nsswitch.conf
/etc/lvm
/var/run
5. Execute the first sync
On the source:$ screen -R rsync
$ ssh root@$destination_ip_address # answer yes to trust the destination key
$ exit # exit from the remote computer
# rsync <options> <excluded files> <source> <destination>
# Copy everything from SOURCE:/ to DESTINATION:/ exclude the excluded_files
# The --delete option will delete any files in the destination directory if
# they don't exist in the source directory.
$ rsync -avz --progress --delete --exclude-from=/excluded_files / root@$destination_ip_address:/
# to exit the screen press ctrl + a d
# to enter the screen again, type screen -x
6. After first sync finishes, do the second sync
$ screen -x rsync$ cat /dev/null >/root/.ssh/known_hosts # wipe the known_hosts file, as on the destination the key has changed
$ ssh root@$destination_ip_address # answer yes to trust the destination key
$ exit # exit from the remote server
# stop all important services on the source, like mysql, oracle, apache, nginx, sendmail, postfix, after which do the second rsync:
$ rsync -avz --progress --delete --exclude-from=/excluded_files / root@$destination_ip_address:/
No comments:
Post a Comment