How to Move Your Home Folder to Another Partition [Linux/Ubuntu]

If you have accepted the default option while installing Ubuntu, or that your computer comes with Ubuntu pre-installed, chances are that your Home folder and the system folders all lie in the same partition. This is perfectly fine, but if you want to upgrade your existing Ubuntu version, or reinstall Ubuntu, you won’t be able to preserve your app settings, or even retain your files and documents. One of the good practice is to give the Home folder its own partition, so whatever changes you made to the System folder won’t affect your Home directory, and you can easily upgrade or reinstall Ubuntu with ease.

If you want to move your Home folder to another partition, here is how you can do so.

Note: You can skip this step if you already has an existing external partition that you can use.

Assuming that your computer has only one hard disk and it contains only one partition. To create a new partition, you have to first obtain a Ubuntu Live CD/USB and boot into it. You can’t partition the hard disk when it is running.

Once you are booted into the Live session, open the app “GParted”. Select the hard disk from the list. It should be labelled something like “sda”.

gparted-select-hard-disk

You should see a number of entries in the list. Select the entry that corresponds to the main partition. It should be the one with the biggest file size and is either in the ext3 or ext4 filesystem format. Right click on it and select “Resize/Move”.

gparted-resize-move-partition

Set the size for the new partition in the “Free Space Following” field. The number is represented in MB, so if you want to set aside 10GB for the new partition, enter “10000”. You will notice that as you enter the number, the number in the “New Size” field will decrease accordingly. My usual practice is to set aside 10GB for the system files and allocate the rest to the Home partition. Click “Resize/Move”.

gparted-set-new-partition-size

Back to the GParted main screen, you should now see a new “Unallocated” entry with the file size that you have set earlier. Right click on it and select “New”. Select “ext4″ as the filesystem and click “Add”.

gparted-add-new-partition

Lastly. click the green check button to apply the changes. Depending on your hard disk size, the resizing process might take a long time

gparted-apply-changes

After the process is completed, you should see something like the screen below. Record down the new partition number.

gparted-new-partition-number

Now shut down the live session, remove the live CD/USB and boot up the computer.

To migrate your current Home folder to an external partition, there are four things that you need to do:

  1. Mount the external partition onto a temporary Home location.
  2. Copy the files from your current Home folder to this temporary Home folder.
  3. Relocate the current Home folder
  4. Mount the new Home folder.

1. Create a temporary Home folder

Open a terminal and type the following:

sudo blkid

This will display the UID of all the partitions. Record down the UUID for the partition that you have created earlier.

ubuntu-get-uid-of-partition

Next, open the fstab file:

sudo nano /etc/fstab

and add the following line to the end of the file.

UUID=xxx-xxxxx-xxxxx   /media/home    ext4          nodev,nosuid       0       2

Replace the UUID with the UUID value of the external partition.

ubuntu-new-entry-in-fstab

Save (Ctrl + o) and exit (ctrl + x) the file.

Next, create a mount point:

sudo mkdir /media/home

and reload the updated fstab.

sudo mount -a

You should now see a “home” folder in the Media directory.

2. Copy the files from your current Home folder to the new Home folder

The next thing we are going to do is to copy all the files from the current Home folder to the new Home folder. You can simply do a “Select all”, “Copy” and “Paste” to transfer all the files to the new Home folder. However, you might be missing out the hidden files and some of the file permissions might not be preserved. A more complete method would be using rsync.

sudo rsync -aXS /home/. /media/home/.

3. Relocate the current Home folder

Once we have set up the new Home folder, we need to remove the existing Home folder to make way for the new Home folder in the external partition. To do that, type the following commands in the terminal:

cd /
sudo mv /home /home_backup
sudo mkdir /home

What the above commands do is to move the existing Home folder to Home_backup, and create an empty Home folder for the new Home folder to mount to.

4. Mount the new Home folder

The last step to complete the migration is to mount the new Home folder as “/home”. To do that, we have to revisit the fstab file again.

sudo nano /etc/fstab

All you have to do is to change the “/media/home” to “/home”. Save and exit the file.

ubuntu-mount-new-home-in-fstab

Lastly, reload the fstab file:

sudo mount -a

That’s it. You have now migrated your Home folder to an external partition.

Optional: removing the Home_backup folder

Once you are done with the migration, you can either use the old Home folder as a backup, or remove it to release the storage space. To remove it, use the command:

sudo rm -rf /home_backup

Let us know in the comments if you encountered any difficulty.

Image credit: Moving House – Kiwi Style