The gist of the process is to create a new RAID5 array in a degraded state using the 2 new drives. Copy the data over to the degraded array, then add the drive that originally contained the data to the array.
(You'll note that these are different partitions not drives because these notes are from when I was preparing/testing)
apt-get install mdadm (Debian/Ubuntu)
#Optionally: Create 2 unformatted partitions slightly smaller than the drive size on the new hard drives. Change flags to raid in gparted or use fdisk to change IDs to 'fd' (fdisk /dev/sda; t; 1; fd).
#Step 1: Create the RAID 5 degraded array:
mdadm -C /dev/md0 -l 5 -n 3 missing /dev/hdb1 /dev/hdb2
(the -l is a letter 'L' not a 'one')
(where /dev/hdb1 and /dev/hdb2 are the 2 new drive partitions)
#Create a file system on the RAID, ex:
mkfs /dev/md0 -t ext3
#Create a mount point and mount the RAID partition (/dev/md0)
#Copy existing files onto the raid:
rsync -avH --progress -x /existing/files/ /RAID/mountpoint/
#Clear the full drive, (optionally create unformatted partition on it of same size as other 2 drives in RAID with raid flag (or 'fd' ID; see above))
#Add the originally full drive to the array:
mdadm /dev/md0 -a /dev/hdb3
#To view status of the rebuild:
watch -n1 'cat /proc/mdstat'
(l is the number 'One' not the letter 'L')
#Check to make sure everything looks alright:
mdadm --detail /dev/md0