how can I symlink my home folder from another drive?

Remember that your permissions will need to be the same. In addition to symlink, on more recent distros and filesystems, as root you can also use bind-mount:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

This is useful for allowing access "through" the /home directory to subdirs via daemons that are otherwise configured to avoid pathing through symlinks (apache, ftpd, etc.).

You have to remember (or init script) to bind upon restarts, of course.


According to this question on Super User this is possible.

You can create a symbolic link using:

ln -s /extra-home/username /home/username

If it doesn't work for some reason you can just delete the symbolic link, move the directory back and reboot your computer.


I would try this:

While logged in as a different user, in a root shell (e.g. sudo -i), copy over the contents of /home/username to /extra-home/username and make sure the new location is owned by username:

# cp -p /home/username /extra-home/
# chown username:username /extra-home/username

Move the original /home/username/ directory to a safe place:

# mv /home/username /root/

Create the symlink:

# ln -s /extra-home/username /home/username

Verify it's working as expected by opening another terminal window and running su:

$ sudo su username

If everything looks good, at least from the terminal (contents of /home/username/ appear as expected), then log out and log back in (I'm assuming you're on Ubuntu desktop) and it should be working normally. However, if it isn't, just delete the symlink and move the archived home folder back to its original location.