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.