http://www.cyberciti.biz/faq/howto-move-migrate-user-accounts-old-to-new-server/
I have put it on my website as it is really essential viewing and because it is 10 years old I want to make sure that I don't lose it if the site goes offline for some reason, so thanks Vivek Gite for writing it.
You can migrate users from old Linux server to new Linux sever with standard commands such as tar, awk, scp and others.
Following files/dirs are required for traditional Linux user management:
* /etc/passwd – contains various pieces of information for each user account
* /etc/shadow – contains the encrypted password information for user’s accounts and optional the password aging information.
* /etc/group – defines the groups to which users belong
* /etc/gshadow – group shadow file (contains the encrypted password for group)
* /var/spool/mail – Generally user emails are stored here.
* /home – All Users data is stored here.
You need to backup all of the above files and directories from old server to new Linux server.
First create a tar ball of old uses (old Linux system). Create a directory:# mkdir /root/move/
Setup UID filter limit:# export UGIDLIMIT=500
Now copy /etc/passwd accounts to /root/move/passwd.mig using awk to filter out system account (i.e. only copy user accounts)# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/move/passwd.mig
Copy /etc/group file:# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/move/group.mig
Copy /etc/shadow file:# awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/move/shadow.mig
Copy /etc/gshadow (rarely used):# cp /etc/gshadow /root/move/gshadow.mig
Make a backup of /home and /var/spool/mail dirs:# tar -zcvpf /root/move/home.tar.gz /home
# tar -zcvpf /root/move/mail.tar.gz /var/spool/mail
Where,
Use scp or usb pen or tape to copy /root/move to a new Linux system.# scp -r /root/move/* user@new.linuxserver.com:/path/to/location
First, make a backup of current users and passwords:# mkdir /root/newsusers.bak
# cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/newsusers.bak
Now restore passwd and other files in /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
Please note that you must use >> (append) and not > (create) shell redirection.
Now copy and extract home.tar.gz to new server /home# cd /
# tar -zxvf /path/to/location/home.tar.gz
Now copy and extract mail.tar.gz (Mails) to new server /var/spool/mail# cd /
# tar -zxvf /path/to/location/mail.tar.gz
Now reboot system; when the Linux comes back, your user accounts will work as they did before on old system:# reboot