说明:
我该怎么将我旧服务器上的用户账户(包括用户邮件)迁移到新服务器上呢。新系统是全新安装上的。
我们可以通过将旧服务器上的以下信息 复制 到新服务器上,来实现账号迁移!
/etc/passwd 包含各用户账户信息
/etc/shadow 包含用户加密的密码及账号失效时间等
/etc/group 定义用户所属组
/etc/gshadow加密的组文档(包括组密码?)
/var/spool/mail 各用户邮件
/home 用户家目录
实现:
一、旧服务器上的操作
1.先建立个目录,用于存放上面的6个文件
# mkdir /root/move/
2.过滤掉uid低于500的。低于500基本是系统默认账号
# export UGIDLIMIT=500 # awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/move/passwd.mig //拷贝500《=GID《=65534的用户到passwd.mig,下同! # awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/move/group.mig # awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/move/shadow.mig # cp /etc/gshadow /root/move/gshadow.mig
这里,我是直接拷贝/etc/password,/etc/group等文件,并没有过滤掉500《=GID《=65534。
# cp /etc/passwd /root/move/passwd.mig # cp /etc/group /root/move/group.mig # cp /etc/shadow /root/move/shadow.mig # cp /etc/gshadow /root/move/gshadow.mig
3.压缩用户家目录及用户邮件目录,注意加p,保留目录原属性
# tar -zcvpf /root/move/home.tar.gz /home # tar -zcvpf /root/move/mail.tar.gz /var/spool/mail
可以通过tar –exclude=/home/lala -zcvpf /root/move/home.tar.gz /home/*这样,通过–exclude=/home/lala排除/home/lala目录
二、新服务器上的操作
完成上面的3步后,剩下的就是将上面那6个文件拷贝到新服务器上,覆盖相应的位置就可以了。
1.先备份新服务器上相应文件
# mkdir /root/newsusers.bak # cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/newsusers.bak
2.将旧服务器上的文件覆盖到新服务器上相应的位置
# mv /root/move/passwd.mig > /etc/passwd # mv /root/move/group.mig > /etc/group # mv /root/move/shadow.mig > /etc/shadow # mv /root/move/gshadow.mig > /etc/gshadow
3.解压旧服务器上的用户家目录及邮件目录
# cd /root/move # tar -zxvf /root/move/home.tar.gz # cp home/* /home/ # tar -zxvf /root/move/mail.tar.gz # cp var/spool/mail /var/spool/mail
4.最后,重启系统
# reboot
附录:
附录1:
# tar tvf home.tar.gz //-t可以实现不解压查看压缩文件
# tar zxvf home.tar.gz -C /home/aaa //通过-C指定解压的目录。
附录2.原文参考:Move or migrate user accounts from old Linux server to a new Linux server