如何将 /home 迁移至新的硬盘?

如何将 /home 迁移至新的硬盘?

为了尝试 Linux,我组装了自己的 Linux 机器(去年使用 Ubuntu 8.04 LTS)。由于只是尝试,我选择使用旧的 80GB 硬盘,现在,正如往常一样,硬盘空间不足了。我买了一个新硬盘(1TB,虽然我不确定这是否相关),准备安装,因为有空间,并且希望将来升级发行版时更容易。

是否有一种简单的方法/home可以把我的分区重新定位到新驱动器,而将操作系统保留在旧驱动器上?

我意识到'简单的' 可能只是对于给定值...但任何帮助都会受到感谢。另外,使用 1TB 驱动器是否会出现任何问题,我的主板似乎很乐意从手册上支持它,但大驱动器大小是否存在任何深奥的 Ubuntu 问题?

答案1

1TB 硬盘没有问题(这并不大 ;-))

创建一个分区并格式化新驱动器(我现在称之为 /dev/sdb1)。对于超过 300GB 的分区大小,我更喜欢 XFS。

现在从 X 注销,以 root 身份登录 tty1。将新分区挂载到 /mnt/temp-home 并复制您的数据:

mkdir -p /mnt/temp-home && mount /dev/sdb2 /mnt/temp-home
rsync -WaP /home/ /mnt/temp-home/

现在再检查一下 /mnt/temp-home 是否以正确的权限和所有权保存了您的数据。如果您愿意,可以移动文件夹名称,然后稍后删除旧文件夹:

mv /home /home_old

以 root 身份创建新的挂载点和 fstab 条目:

umount /mnt/temp-home
mkdir /home
chmod 0755 /home
cat >> /etc/fstab <<EOF
/dev/sdb1 /home           xfs     defaults        0       2
EOF
mount /home

您已完成!现在登录 X (gnome/kde/xfce..)。并享受您的新驱动器。

不要忘记删除 /home_old 来释放空间!

答案2

我比较保守,因为我必须在更大的系统上执行此操作,并且使用数据。我的方法:

创建新的文件系统并将其挂载到某处(例如 /mnt/new-home)

以 root 身份使用 rsync 将数据从当前位置复制到新位置:

# rsync -avW --progress --delete /home/* /mnt/new-home

您可以在系统实时且用户登录的情况下执行该部分操作。事实上,您可以多次执行该操作 - 后续运行应该更快,因为大多数数据已经存在,并且--delete标志将清理已被删除的文件。(rsync 命令将帮助您使用我选择的其他标志。)

现在您需要一个维护窗口,您可以在其中将所有人踢出服务器。启动到单用户模式,重新挂载 /home 和 /mnt/new-home,然后再次运行 rsync 命令。由于 99% 的工作已经完成,因此这次 rsync 运行应该很快。(或者至少比第一次运行要快——我曾让“单用户、最后一次”rsync 运行长达四个小时,但几乎没有做任何事情……)

完成后,更改 /etc/fstab,以便您一直使用的分区新家挂载为 /home。您还可以将旧的主分区挂载为 /home.old,或者如果它只是较大分区中的一个目录,则将其重命名为 /home.old。

重新启动回到多用户,您就完成了。

我之所以不按照 ThorstenS 的建议使用 mv,是因为我有过糟糕的经历,mv 会在中途崩溃。使用 rsync,如果你把新家,您可以随时卸载它,将其重新格式化,然后您就可以恢复工作了——不会丢失任何数据。而且我喜欢将旧源保留一段时间,以防我的全新 1TB 驱动器在第一周就出现故障。一段时间后,您会对新驱动器感到满意(或者迫切需要旧驱动器占用的空间),然后就可以清理它了。

您的备份很好,对吧?:)

相关内容