I have two hard drives in my computer: one with the / partition and the swap partition, and another with the /home partition.

The hard drive with the /home partition was getting full, so I bought another one.

Here’s what I did to move the /home partition to the new hard drive:

  • Replace the old drive for the new one.
  • Connect the old drive to another sata port. This way the new drive is in the right place and after moving the /home partition I just have to remove the old drive.
  • Boot computer.
  • Create a new Extended Partition in the new drive (I used GParted) with a primary partition inside. At this point there is no mount point to this new partition. The new partition in this case is /dev/sdb5.

B3 Server

  • Get the UUID for the new partition:
sudo blkid
  • It will be something like:
/dev/sdb5: UUID="**aa111aaa-1122-aaaa-9999-cccc44447777**" TYPE="ext4"
  • Backup your /etc/fstab file:
sudo cp /etc/fstab/etc/fstab.$(date +%Y-%m-%d)
  • Create a new folder to mount the new partition:
sudo mkdir /media/home
  • Edit you /etc/fstab file in order to mount the new partition in the new folder:
gksu gedit /etc/fstab
  • Add the following, using your UUID
UUID=**aa111aaa-1122-aaaa-9999-cccc44447777** /media/home    ext4          nodev,nosuid       0       2
  • Mount the new partition:
sudo mount -a
  • Copy your /home partition to the new /media/home partition. At this point I disconnected the computer from my LAN so nothing changes:
sudo rsync -axS --exclude='/*/.gvfs' /home/. /media/home/.
  • Compare the two partitions:
sudo diff -r /home /media/home > ~/diff.txt
  • Analyze the differences to see if you have to copy something else:
gedit ~/diff.txt
  • Edit you /etc/fstab file again in order to mount the new partition in the /home folder:
UUID=**aa111aaa-1122-aaaa-9999-cccc44447777** /home ext4 nodev,nosuid 0 2
  • Move the current /home to a /old_home folder. I had to go to a terminal session in order to do this (Ctrl+Alt+F5 to go to the terminal, Ctrl+Alt+F7 to get back):
cd / && sudo mv /home /old_home && cd / && sudo mkdir -p /home
  • Reboot.
  • After checking everything is allright, remove the /old_home folder:
cd /
sudo rm -r /old_home
  • You can now halt your computer and remove the old hard drive.

More information about this subject, look up Ubuntu Documentation.