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.
Creating a new partition
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”.
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”.
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”.
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”.
Lastly. click the green check button to apply the changes. Depending on your hard disk size, the resizing process might take a long time
After the process is completed, you should see something like the screen below. Record down the new partition number.
Now shut down the live session, remove the live CD/USB and boot up the computer.
Migrating the Home folder
To migrate your current Home folder to an external partition, there are four things that you need to do:
- Mount the external partition onto a temporary Home location.
- Copy the files from your current Home folder to this temporary Home folder.
- Relocate the current Home folder
- Mount the new Home folder.
1. Create a temporary Home folder
Open a terminal and type the following:
This will display the UID of all the partitions. Record down the UUID for the partition that you have created earlier.
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.
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
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.
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