# 🐧 Move your Home directory to another hard drive or partition

Moving the home directory to another hard drive or just a partition, is often a good idea:

* You might need more space on your hard drive and most likely your home folder is the biggest folder. So moving it to another hard drive frees up a lot of space.
    
* You may want to change to another OS (or keep the option open). Then using another partition (or hard drive) is very helpful, as you don’t have to backup your data and after the installation copy it back. This is especially interesting, if you use something like a Raspberry Pi or similar devices and you often try out new distributions.
    

⚠ `Warning:` Be aware that you move config files, which might break the system. For that reason, most of the steps are described with terminal commands. So you could execute them in the tty, if needed. Also it is highly recommended to try it within a virtual machine first and only after that on your productive machine. And of course, backup your data beforehand! 🙂

## Check Devices

Run `lsblk` in the terminal which will output something like:

```bash
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    sda      8:0    0   20G  0 disk
    ├─sda1   8:1    0  300M  0 part /boot/efi
    └─sda2   8:2    0 19,7G  0 part /
    sdb      8:16   0    8G  0 disk
    sr0     11:0    1 1024M  0 rom
```

`sda` is our main drive, whereas `sdb` is our second drive, where we want to put our home directory. FYI, this example is just made up in a virtual machine. In your case the names might differ.

## Create Partition (if needed)

In this example `sdb` is not formatted yet. As you see, there are no partitions under `sdb`. If you already have a partition, skip this step.

We will create a new partition with `gparted`.

1. (Install and) start `gparted`
    
2. Select `sdb` in the top right corner
    
3. Click on `Divice` -&gt; `Create Partition Table...` -&gt; table type `msdos` -&gt; `Apply`
    
4. Right click on the partition -&gt; `New` -&gt; `Add`
    
5. Click on the `check mark` “Apply all Operations”
    
6. Run `lsblk` again to double check results
    

````bash
      NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
      sda      8:0    0   20G  0 disk
      ├─sda1   8:1    0  300M  0 part /boot/efi
      └─sda2   8:2    0 19,7G  0 part /
      sdb      8:16   0    8G  0 disk
      └─sdb1   8:17   0    8G  0 part
      sr0     11:0    1 1024M  0 rom
```
Now we have the new partition `sdb1`.


<a id="org7c0d916"></a>

## Mount the new partition to /mnt/tmp

We will mount the new partition to /mnt/tmp so we can copy our home folder there.
``` bash
  sudo mkdir /mnt/tmp
  sudo mount /dev/sdb1 /mnt/tmp # replace /dev/sdb1 with your partition
````

## Copy your home directory to the second drive

We use `rsync` to copy our home directory.

```bash
    sudo rsync -avx /home/ /mnt/tmp
```

## Check if /home is created on new file system and mount it temporary

```bash
    sudo mount /dev/sdb1 /home
    df /dev/sdb1
```

Open your file explorer or terminal to check if everything is still fine.

## Delete folder with safety net

Important: unmount the /home directory again and after that, we can move the home folder. The real deletion can be made, when we are 100% sure, that everything works as expected.

```bash
    sudo umount /home
    sudo mv /home /home.orig
```

## Editing fstab with safety net

Copy a `fstab` backup:

```bash
    sudo cp /etc/fstab /etc/fstab.orig
```

Get the UUID from your partition via:

```bash
    sudo blkid | grep "/dev/sdb1" # replace /dev/sdb1 with your partition
```

Edit the /etc/fstab file with your favorite text editor. Add/change the line in the file:

```bash
    UUID=<copied number from above> /home ext4 defaults 0 2
```

Reboot the system.

## Delete Home Folder

After restart and when everything is fine, you might delete the home backup directory:

```bash
    rm -rf /home.orig/*
    rm /etc/fstab.orig
```
