How can I migrate my existing /home/ directory to another drive? - eviltoast

This was I can wipe the drive it’s on and install a new OS without losing anything in /home/

  • blotz@lemmy.world
    link
    fedilink
    arrow-up
    24
    ·
    edit-2
    11 months ago

    Log in as root to avoid trying to make sure no files in /home/ are being read/written to.

    Step 1: copy data to new drive. Mount new drive to /mnt/. cp -ra /home/* /mnt/. -a means that all permissions remain the same which will mean that your user can still read them. Check the man page for more details. This command will take a while. Use -v to see progress. You should see a folder with your username appear.

    Step 2. Prepare /home for new drive. Move the files to a new folder. This is done to make sure you can still easily go back. mv /home/ /home-bak/ keep your old home dir safe in case a mistake was made. mkdir /home/.

    Step 3. Mount your new drive. Mount your drive to /home/ and check if you can login. If everything went correctly, you should be able to just login. Finally you need to update your /etc/fstab to include this new drive. This will make sure your home drive mounts when you start your os. If everything is working, you can delete your home-bak as well.

    • I dont like the MV home. 😅

      My advice :

      • login as root.
      • rsync -av /home, on the new disk.
      • fstab : comment the old home’s line, don’t delete, and copy it to change the identifier (path or uuid).
      • noob tips, add a new file in the new home.
      • login to check it is ok (with su - user), and check there is the new file.

      You can now delete or keep it as a save.

    • blotz@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      11 months ago

      This is a rough guide written on mobile. its probably best if someone double check some of this stuff before op tries it.

  • lurch (he/him)@sh.itjust.works
    link
    fedilink
    arrow-up
    7
    ·
    edit-2
    11 months ago

    If you have a root account that allows logging in in text mode (no X no Wayland, no GUI), you would do that instead. These instructions are for that case. The home of root is /root , so it would not be affected.

    Mount the new drive in an emty dir, if it isn’t already.

    Make sure the other drives file system supports everything /home does.

    Set the exact same permissions as /home/ in the new drives top level directory.

    Add a line to fstab defining the other drive to be mounted automatically as /home .

    Move the contents of /home over to the other drive.

    Umount the other drive.

    Enter just: mount /home

    This should work without errors and if you peek inside, you should see user dirs and it should show up if you enter just: mount

    No reboot necessary, you could just log out, switch to the GUI login and log in as regular user. After your next boot you will find out if you edited your fstab correctly to auto mount it. If not just log in as root in text mode again and fix it.

  • mcepl@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    11 months ago
    1. Many Linux installers can preserve /home when asked nicely.
    2. (as root) rsync -avz /home/youruser/ other-machine:/home/
  • Rustmilian@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    11 months ago

    In what way? Like a home partition?
    Home should just be a folder you can copy over in most cases.
    If it’s a separate partition, most distros can just install to the other partitions without overwriting the home partition.