Linux: Перенос системных пользователей и их домашниее директории на другой сервер

Перенос системных пользователей с домашними директориями проходит в два этапа:

  1. Перенос учетных записей и паролей
  2. Перенос домашних директорий


Первый этап — необходимо перенести содержимое файлов /etc/group, /etc/passwd, /etc/shadow и /etc/gshadow.
Для сохранения используем скрипт:

#!/bin/sh
 
mkdir /root/move/
# Устанавливаем фильтр UID:
export UGIDLIMIT=500
# Копируем данные через awk
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/move/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

Затем переносим экспортированные файлы на новый сервер

scp -r /root/move/* <user>@<new_server_ip>:/path/to/location

И восстанавливаем их на новом сервере, предварительно сохранив оригинальные файлы

#!/bin/sh
 
mkdir /root/users.orig
# Сохраняем оригиналы
cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/users.orig
 
#Импортируем скопированных пользователей
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

Второй этап копирование домашних директорий.

На исходном сервере запускаем команду rsync

rsync -avv --progress --recursive --times --perms --links --owner --group --exclude 'lost+found' /home/ root@<servername>:/home/

Комментарии запрещены.