个人工具

UbuntuHelp:Partitioning/Home/Moving

来自Ubuntu中文

Wikibot讨论 | 贡献2009年5月12日 (二) 18:19的版本

跳转至: 导航, 搜索

Why this guide is superior to the others

If you don't care about this topic, just skip to the next section where the guide starts. I wrote this guide simply because I found some flaws in the other guides that I read, and I wanted to record my findings for future reference. I'm posting (and updating a bit) here for the benefit of others. Here are the reasons I originally wrote this guide:

  • Partition and setup fstab first
  • There are guides that use mount commands to do the initial partition mounting, and then setup fstab after you have moved your /home. If you mess up your fstab, then when you reboot, your system will lose track of your /home files. Setting up fstab first and using sudo mount -a to mount the partitions avoids this problem.
  • Use rsync to move the files
  • There is lot's of debate about which command to copy your files to the new /home partition. This debate stems from a time in the past when cp was not able to do it properly (I think it skipped files?). cp was not designed to be a powerful backup tool. The fix, then, was to use a combo of find and cpio (See section 8.3.5). cp has had improvements since, but why not use rsync, a tool that is designed for backups like moving your /home, and much more. Rsync is not only able to copy over all the files, but is also able to maintain other characteristics of the file, like permissions, ownership, and timestamps.

The Guide

Setting up /home on a separate partition is beneficial because your settings, files, and desktop will be maintained if you upgrade/reinstall/use a different distro. This works because /home has a subfolder for each user's settings and files. Also, fresh installs for linux typically like to wipe whatever partition they are being installed to, hence the need to put /home on a different partition.

Setup Partitions

This is beyond the scope of this page. Try here if you need help. Memorize or write down the location of the partition, something like /sda3 or /hda3. Its been suggested to use either ext2 or ext3 over vfat. Using vfat is not supported and may fail, since vfat does not support permissions.

Setup Fstab

Use your favorite editor to edit fstab, like: gksu gedit /etc/fstab <
> Add a line for your partition; something like the following line:

UUID=????????   /media/home    ext3          nodev,nosuid       0       2
# (identifier)  (location  )   (format)      (   some settings           )  

You should replace the ?'s with the UUID of the intended /home partition, and the location should be a temporary one (/media/home is assumed in the rest of the guide). If /media/home does not exist yet, then you may create it with the command

sudo mkdir /media/home

The UUID can be found with:

blkid

Now, mount the partition with:

sudo mount -a

Check that you can copy files over, at least as root (ie with sudo).

Copy /home to the New Partition

sudo rsync -axS --exclude='/*/.gvfs' /home/. /media/home/.

The --exclude='/*/.gvfs' prevents rsync from complaining about not being able to copy .gvfs, but I believe it optional. Even if rsync complains, it will copy everything else anyway. (See here for discussion on this)

Make the Switch

Here is the point of no return. If the previous two steps worked, you should have no troubles. Rename your /home directory:

sudo mv /home /old_home

Re-create a /home directory with (this is because the next steps need the location to already exist):

sudo mkdir /home

Edit fstab so that your new home partition actually points to /home (ie. by changing /media/home to /home) and finally, remount the partition with:

sudo mount -a

Reboot to ensure that currently running programs use the new /home

After a reboot

If everything is working, great, you can delete /old_home. If things aren't working, you can undo by moving your /old_home back to /home, and delete the line you added to fstab.

Technical Notes and Resources

Rsync was chosen over cp and find|cpio because it seemed to maintain permissions. http://ubuntu.wordpress.com/2006/01/29/move-home-to-its-own-partition/ http://ubuntuforums.org/showthread.php?t=46866