Linux: Перенос системных пользователей и их домашниее директории на другой сервер
Перенос системных пользователей с домашними директориями проходит в два этапа:
- Перенос учетных записей и паролей
- Перенос домашних директорий
Первый этап — необходимо перенести содержимое файлов /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 </new_server_ip></user> |
И восстанавливаем их на новом сервере, предварительно сохранив оригинальные файлы
#!/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/ </servername> |