我想安装另一个发行版但保留我的主目录。有没有办法将主目录移动到单独的分区?我没有可用于备份数据的外部硬盘。我想按照建议设置分区这里。
答案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)仍然指向该目录),然后假设它有效,删除我们制作的备份副本,将我们放置在目标文件系统中的副本保留下来。