安全迁移用户主目录需遵循“先复制、再切换、后验证”流程:先格式化新盘并用rsync完整复制数据,再更新fstab通过uuid挂载到/home,最后验证登录、权限、文件读写及重启稳定性。

安全迁移用户主目录到新磁盘,核心是“先复制、再切换、后验证”,全程避免直接修改正在使用的家目录。关键在于确保权限、属主、挂载配置三者准确,且不中断用户登录能力。
一、准备新磁盘并格式化
确认目标硬盘(如 /dev/sdb)未被使用:
- 运行 lsblk 或 sudo fdisk -l 查看设备名和分区状态
- 若为全新盘,用 sudo fdisk /dev/sdb 创建一个主分区(如 /dev/sdb1)
- 格式化为 ext4:sudo mkfs.ext4 /dev/sdb1
二、临时挂载并完整复制数据
不要在系统运行时直接操作 /home,而是走临时路径中转:
- 创建临时挂载点:sudo mkdir /mnt/new_home
- 挂载新分区:sudo mount /dev/sdb1 /mnt/new_home
- 用 rsync 完整复制(保留权限、属主、ACL、扩展属性):
sudo rsync -aHAX --delete /home/ /mnt/new_home/ - 检查结果:ls -l /mnt/new_home 确认各用户目录属主正确(如 user1:user1)
三、更新挂载配置并切换
修改 /etc/fstab 让系统重启后自动把新分区挂到 /home:
- 备份原文件:sudo cp /etc/fstab /etc/fstab.bak
- 查新分区 UUID:sudo blkid /dev/sdb1(推荐用 UUID 而非设备名,防设备顺序变动)
- 编辑 /etc/fstab,添加一行(替换其中的 UUID):
UUID=xxxx-xxxx /home ext4 defaults 0 2 - 测试配置是否合法:sudo mount -a(无报错即成功)
- 卸载旧 /home(需确保无人登录):
sudo umount /home && sudo mount /home
四、验证与收尾
切换后必须逐项确认,不能只看能否登录:
- 以任一用户登录终端,执行:pwd 和 ls -la ~,确认路径是 /home/xxx 且内容完整
- 检查关键配置文件是否生效:cat ~/.bashrc、ls ~/.config
- 尝试创建测试文件:touch ~/test_migrate && ls -l ~/test_migrate,确认属主和写入正常
- 重启系统一次,验证开机自动挂载及用户登录是否稳定
迁移完成且验证无误后,可清空原 /home 所在分区(如 /dev/sda2)上的数据,但建议先保留至少一周作为回退保障。











