Linux系统用户迁移到其它盘方法
步骤 1:创建脚本文件
使用文本编辑器(如 nano 或 vim)创建脚本文件,例如 migrate_users.sh:
sudo nano /root/migrate_users.sh
脚本代码如下:
#!/bin/bash
# 迁移用户主目录到 /mnt/sdb1 的批量脚本# 用户列表(按需修改)
USERS=("用户名1" "用户名2" "用户名3")# 检查挂载点是否存在
if [ ! -d "/mnt/sdb1" ]; thenecho "错误:/mnt/sdb1 不存在或未挂载!"exit 1
fi# 循环处理每个用户
for USER in "${USERS[@]}"; doecho "正在处理用户: $USER"# 1. 复制目录(保留权限)sudo rsync -av --progress "/home/$USER/" "/mnt/sdb1/$USER/"# 2. 修改用户主目录路径sudo usermod -d "/mnt/sdb1/$USER" "$USER"# 3. 修复所有权和权限sudo chown -R "$USER:$USER" "/mnt/sdb1/$USER"sudo chmod 700 "/mnt/sdb1/$USER"echo "用户 $USER 迁移完成"echo "----------------------------------"
done
echo "所有用户迁移完毕!请手动验证数据完整性。"
步骤 2:赋予脚本执行权限
sudo chmod +x /root/migrate_users.sh
步骤 3:运行脚本
测试运行(空跑模式)首次运行时,建议添加 -n 参数测试 rsync 的模拟操作(不实际复制文件):
sudo bash /root/migrate_users.sh -n
正式运行
确认测试无误后,正式执行:
sudo bash /root/migrate_users.sh
步骤 4:验证迁移结果
检查用户主目录:
# 查看用户配置
grep 用户1 /etc/passwd
# 应显示主目录为 /mnt/sdb1/用户1
切换用户测试:
sudo su - 用户1
pwd # 应输出 /mnt/sdb1/用户1
exit
验证文件权限:
ls -ld /mnt/sdb1/用户1 # 权限应为 drwx------(700)
关键注意事项
备份数据
强烈建议 在操作前备份 /home 和 /mnt/sdb1:
sudo tar -czvf /backup/home_backup.tar.gz /home
sudo tar -czvf /backup/mnt_sdb1_backup.tar.gz /mnt/sdb1
停机时间
确保迁移时用户未登录或运行进程。可通过以下命令检查:
who # 查看当前登录用户
lsof /home # 检查文件占用情况
挂载持久性
确保 /mnt/sdb1 在 /etc/fstab 中配置,避免重启后失效:
echo "/dev/sdb1 /mnt/sdb1 ext4 defaults 0 0" | sudo tee -a /etc/fstab