如何将主目录移动到单独的分区?

如何将主目录移动到单独的分区?

我想安装另一个发行版但保留我的主目录。有没有办法将主目录移动到单独的分区?我没有可用于备份数据的外部硬盘。我想按照建议设置分区这里

答案1

你的问题是发行版中立的,所以如果我提到你没有的任何具体内容,只需使用你这边的同等内容即可。

我真的建议您购买外部备份,相信我,丢失数据是最糟糕的。继续需要您自担风险- 但如果你买不到,你可以这样做。

你需要什么

  • /home 目录的大小
  • 可用空间,超过 /home 目录的大小
  • 磁盘分区工具,我推荐gparted

该怎么办

  • 检查 /home 目录的大小(最后的结果将是 home 目录的总大小):

    du -h /home

  • 检查新分区是否有足够的可用空间:

    df -h

  • 安装gparted

    sudo apt-get install gparted

您需要比 /home 目录大小更多的可用空间。如果您没有可用空间,那么您将无法创建新分区,并且无论如何都需要将数据移动到外部分区。

如果有空间,请使用 gparted 缩小现有分区,然后使用释放的未分配空间创建新分区。一旦您的新分区准备就绪,请注意它是 /dev/sdax (用于sudo fdisk -l查看此内容),并将 /home 文件复制到其中。

在新发行版中使用分区

您提到安装另一个发行版,如果您打算覆盖当前发行版,那么在安装过程中应该要求您设置分区。此时您可以指定该分区为/home,选择不是格式化它,一切都会好起来的,您可以跳过下一节。

但是,如果您希望当前的发行版能够使用新的 /home 分区,请按照本节操作:

将分区挂载到现有发行版中

我们必须告诉您的操作系统使用该分区作为新的 /home,我们在 fstab 中执行此操作,但首先让我们找到这个新分区的 UUID:

ls -l /dev/disk/by-uuid

交叉引用新分区的 /sdax 并复制它的 UUID,我的看起来像3d866059-4b4c-4c71-a69c-213f0e4fbf32.

备份 fstab:sudo cp /etc/fstab /etc/fstab.bak 编辑 fstab:sudoedit /etc/fstab

这个想法是添加一个新行,将分区安装在 /home 处。使用您自己的 UUID,而不是我在这里发布的 UUID;)

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=3d866059.. /home           auto    default         0       1

保存并重启,测试新分区是否挂载到/home。运行df -h以列出所有已安装的分区,/home 现在应该位于该列表中。


笔记

  • 这可能是个好主意熟悉 fstab如果你不太了解的话。花点时间思考每一步。
  • 如果您安装新的发行版并使用相同的登录名,您的旧 /home 文件将自动归您所有。
  • 这不是一个可以在一篇文章中涵盖的微不足道的主题,但我想我已经了解了大部分内容。 :)

答案2

帖子的标题和你的问题让我有些困惑。您想将其home分成一个分区,还是只想重新安装并保持不变home

如果您想要的只是重新安装整个操作系统,同时保留您的操作系统,home那么您可以将您的操作系统备份home到一个不受安装影响的位置,然后在之后恢复它,并进行权限修复(用于chown -R username:groupname确保所有权正确) )。

如果您想遵循一些最佳实践并将您的代码分开,home那么这里是您需要的指南。它是为 Ubuntu 编写的,但我认为其他发行版也是如此。

答案3

假设您已经有一个单独的分区(如果没有,您可能想使用gparted或类似的东西,要做一个),您只需执行以下操作(最好以 root 用户身份):

 cp -R /home/whatever /path/to/destination
 mv /home/whatever /home/whatever.orig
 ln -s /path/to/destionation /home/whatever 

然后假设一切正常(以用户身份登录并测试)

 rm -rf /home/whatever.orig 

这会将整个目录(以及所有内容)复制到目标安装点,重命名原始主目录(如果过程中出现问题,我们可以恢复),创建从新位置到原始主目录的符号链接目录(所有内容(如 /etc/passwd)仍然指向该目录),然后假设它有效,删除我们制作的备份副本,将我们放置在目标文件系统中的副本保留下来。

相关内容