Linux 迁移 /home 主目录到新分区 / 磁盘完整教程(零报错、永久生效)

很多人装 Linux 的时候图省事,把系统/和用户数据/home放在同一个分区。用久了系统盘爆满,重装系统还会把个人文档、软件配置全部弄丢。

把 /home 迁移到独立分区或者另一块硬盘,实现系统与用户数据分离:系统随便重装,个人数据不受影响,也解决系统盘空间告急。

本文是生产环境可用的实操流程,使用rsync做无损迁移,保留权限、隐藏文件,UUID 写入/etc/fstab开机自动挂载,覆盖 Ubuntu、Debian、CentOS、Rocky Linux。

迁移前必做准备

⚠️ 磁盘操作,优先备份,防止意外丢数据。

  1. 已经准备好新磁盘或者空闲分区,示例设备名:/dev/sdb1,请替换成你自己的。
  2. 拥有sudo或 root 权限,关闭正在大量读写文件的程序,避免同步过程文件变化。

查看磁盘分区:

lsblk

简单备份 home(可选,建议做):

sudo rsync -av /home /home_backup

全新磁盘:创建分区并格式化

如果你的分区已经建好,可以跳过 fdisk 分区步骤,不要随意格式化存有数据的分区,格式化会清空全部内容。

新建分区:

sudo fdisk /dev/sdb

交互依次输入:

  • n 新建分区
  • p 主分区
  • 一路回车,使用整块磁盘
  • w 保存分区表退出

格式化,根据你的系统选文件系统:

# Ubuntu / Debian 使用 ext4
sudo mkfs.ext4 /dev/sdb1

# CentOS / Rocky 使用 xfs
sudo mkfs.xfs /dev/sdb1

rsync 无损同步 /home 数据(核心)

创建临时挂载点,把新分区临时挂上去:

sudo mkdir -p /mnt/new_home
sudo mount /dev/sdb1 /mnt/new_home

用 rsync 同步全部 home 数据,保留权限、时间戳、隐藏文件、稀疏文件,不要用 cp,cp 很容易丢失属性:

sudo rsync -avXS --progress /home/. /mnt/new_home/

重点:源路径末尾的 . 不能省略,负责同步所有隐藏配置文件。 -a:归档模式,递归 + 保留所有者权限 -v:输出日志 -XS:处理稀疏文件、扩展属性 –progress:显示同步进度

等待拷贝完成,文件越多耗时越久。

修改 /etc/fstab 开机自动挂载 home

不要直接写/dev/sdb1设备名,磁盘顺序变化会导致开机失败,优先使用UUID。

获取新分区 UUID:

blkid /dev/sdb1

复制输出的 UUID 字符串。

备份 fstab,改错有退路:

sudo cp /etc/fstab /etc/fstab.bak

编辑 fstab,我习惯 vim,你也可以用 nano:

sudo vim /etc/fstab

文件末尾增加一行,替换为你自己的 UUID 与文件系统格式:

UUID="你的UUID"  /home  ext4  defaults  0  2

如果是 xfs,把 ext4 改成 xfs。参数 defaults、0 2 保持不变。

生效配置,验证迁移结果

卸载临时挂载,加载 fstab 配置:

sudo umount /mnt/new_home
sudo mount -a

mount -a没有任何输出 = 配置语法正常;如果报错,立刻回去检查 UUID、文件系统格式。

校验 home 是否已经挂载到新分区:

df -h /home
lsblk

确认文件、用户目录、权限完整:

ls /home
ls -l /home

看到/home挂载点指向新分区,用户目录、配置文件全部存在,权限正常,迁移就完成。

清理旧 home 数据(确认没问题再执行)

现在/home已经挂载新分区,原来系统分区里残留的 home 目录文件被覆盖隐藏。确认一切正常后,释放系统盘空间:

sudo rm -rf /home/*

建议保留备份几天,确认日常使用、软件登录全部正常再删除备份。

常见踩坑汇总

  1. 重启无法登录桌面、开机卡住 多半 fstab 写错:UUID 错误、文件系统格式填错。开机进入单用户模式,注释掉 fstab 新加那一行,系统恢复启动后重新核对。
  2. 权限错乱,普通用户没有读写权限 不要用 cp 拷贝,必须带上完整 rsync 参数‑avXS。
  3. 软件配置全部丢失,少了隐藏文件 rsync 源路径末尾漏写.,导致.bashrc等隐藏目录没有复制。
  4. mount‑a 报 superblock 错误 fstab 写的文件系统格式和分区实际格式不一致,拿blkid核对真实格式。

小结

整套流程:备份数据 → 分区格式化新磁盘 → 临时挂载 + rsync 完整同步 → fstab 配置 UUID 挂载 → mount‑a 校验 → 验证业务 → 清理旧数据。

这套方案适合物理机、虚拟机,把用户数据剥离系统盘,以后重装系统只格式化根分区,/home不动,个人资料全部保留。

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress