How to migrate OS User Accounts from one Linux Server to Other/New Linux Server 


We might get into these type of requirements when we are migrating from old server to new server.

Below are the important files to consider while moving users from one server to another

• /etc/passwd contains information about the user.
• /etc/group contains information about the group.
• /etc/shadow contains encrypted password for the user.
• /var/spool/mail contains user mails are stored in this file.
• /home/user contains users home directory, hence it may contain user data.

Users that are added to the Linux system always start with UID and GID values of as specified by Linux distribution or set by admin. 

Limits according various Linux distro:
RHEL/CentOS/Fedora Core : Default is 500 and upper limit is 65534 (/etc/libuser.conf).

Debian and Ubuntu Linux : Default is 1000 and upper limit is 29999 (/etc/adduser.conf).
 
 
 Steps:
 
Connect as root User on old server
1. Backup the user accounts from old server for all users having user id above 500.


# mkdir -p /stage/common (This can be any directory)
# export UGIDLIMIT=500
# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /stage/common/passws.olds

2. Backup the groups in /etc/group file:

# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /stage/common/group.olds

3. Backup the shadow file:

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

4. Backup the users home directory and users mails:

# tar -zcvpf /stage/common/home.tar.gz /home

5. Backup the user's mails:

# tar -zcvpf /stage/common/mail.tar.gz /var/spool/mail

In case required you can copy the cronjobs for users as well from /var/spool/cron

6. Copy the Backup files to new server using scp or any preferrable method.

7. Restore the data into the new server.

# cat passwd.old >> /etc/passwd
# cat group.old >> /etc/group
# cat shadow.old >> /etc/shadow
# /bin/cp shadow.old /etc/gshadow

8. Restore the user's data as well as the user's mails to the new server.

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

9. Reboot Server