迁移用户账户到新的linux服务器

本文编写于4092天前,最后编辑于 4092天前,部分内容可能已经过时,请您自行斟酌确认。

Q:怎么迁移用户账号和邮件到一个全新安装的Cent OS系统?
A:迁移用户从旧的linux服务器到新的服务器只用一些基本的命令就可以。比如tar,awk,scp等。当你使用的是旧的linux发行版,比如redhat 9或者 debian 2.x时就非常有用。
下列的文件和目录对于传统的linux用户管理是必须的
*/etc/passwd 包含每一个用户账户的多种数据
*/etc/shadow 包含加密的账户密码信息和可选的密码存在时间信息
*/etc/group 定义每一个用户所属的用户组
*/etc/gshadow 群组的影子文件(包换加密的群组密码)
*/var/spool/mail 通常用户的邮件会存储在这里
*/home 所有的用户数据存储在这里
你需要备份所有的上述文件和目录从旧的服务器,迁移到新的服务器上。

旧的linux系统上执行的命令:
首先创建一个打包目录在旧系统上。

# mkdir /root/move

设置UID的过滤限制:

# export UGIDLIMIT = 500

现在复制 /etc/passwd 到 /root/move/passwd.mig 。用awk命令过滤出系统账号。(只复制用户账号)

# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/move/passwd.mig

复制/etc/group 文件

# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/move/group.mig

复制 /etc/shadow 文件。


# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/move/shadow.mig  

复制/etc/gshadow(很少使用)

# cp /etc/gshadow /root/move/gshadow.mig

/home 和 /var/spool/mail 目录做一个备份

# tar -zcvpf /root/move/home.tar.gz /home
# tar -zcvpf /root/move/mail.tar.gz /var/spool/mail

每一个用户账号都有一个UID和GID值,这个值是linux发行版确定的或者是系统管理员指定 。不同的发行版有一些不同的限制。
。RHEL/CENTOS/Fedora Core:默认是500,上限是65534(/etc/libuser.conf)
。Debian and Ubuntu Linux:默认是1000,上限是29999(/etc/adduser.conf)
永远不要创建新的系统用户在新安装的Cent OS linux。所以我们使用awk命令过滤掉系统账号。在不同的发行版中根据不同的UID过滤。

# export UGIDLIMIT=500 设置正常用户账号开始的UID。根据不同的发行版来设置。
# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/move/passwd.mig  通过-v选项把UGDILIMIT传递给awk(把shell 变量UGIDLIMIT赋值给变量LIMIT) 选项-F,设置分离的作用域。最后awk读取/etc/passwd每一行,过滤出系统账户并产生新的文件/root/move/passwd.mig。同样的逻辑适用于后面的awk命令

适用scp或者usb pen 或者tape来复制/root/move 到新的liunx系统

# scp -r /root/move/* user@new.linuxserver.com:/path/to/location

新的系统输入的命令

首先备份当前的用户和密码:

# mkdir /root/newsusers.bak
# cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/newsusers.bak

现在恢复密码和用户到/etc/下的配置文件中:

# cd /path/to/location
# cat passwd.mig >> /etc/passwd
# cat group.mig >> /etc/group
# cat shadow.mig >> /etc/shadow
# /bin/cp gshadow.mig /etc/gshadow

需要注意的是一定要使用>>(添加)而不是>(创建)shell 重定向

现在复制额解压home.tar.gz 到新的/home

# cd /
# tar -zxvf /path/to/location/home.tar.gz

复制解压mail.tar.gz到新的/var/spool/mail

# cd /
# tar -zxvf /path/to/location/mail.tar.gz

然后重启系统。

# reboot

以上的技术也适用于unix 到unix或者unix到linux账户迁移。你需要做一些小的改动,单总的概念是差不多的,基本一样。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注