Как правильно выполнить миграцию с одного старого сервера на новый с помощью rsync? Какие шаги необходимо предпринять, чтобы процесс прошёл гладко и без ошибок?

Привет всем!

Я прохожу курс “от 0 до Linux админа” на yodo.im и столкнулся с проблемой. Моему руководителю предложили новый Linux рабочий стол с улучшенными характеристиками. Наш IT-отдел помог мне перенести данные, используя rsync для /home директории. Однако, я хочу более аккуратно перенести все остальные части системы и сервисы, избегая копирования старых конфигураций в новый системе.

Вот мое текущее положение:

  • Старая ОС (лицензия RHEL истекла)
  • Установлена новая ОС (Rocky Linux) с перенесенными пользователями
  • Лицензионное ПО настроено нашей IT-командой
  • Все пользовательские данные (/home) перенесены с помощью rsync
  • Я не копировал /etc, системные директории или конфиги сервисов
  • Старый сервер все еще доступен в течение ближайших двух недель
  • Я использую gitlab сервер в docker для отслеживания хода
  • У меня много python окружений и несколько open-source проектов, использующих базы данных

Мои цели:

  • Аккуратно переустановить сервисы
  • Предотвратить поломки из-за несовместимых версий
  • Улучшить структуру директорий, где это возможно
  • Убедиться в правильности разрешений и владения файлами
  • Настроить резервное копирование перед вводом сервера в эксплуатацию

Мои вопросы следующие:

  1. С какого порядка вы бы рекомендовали начинать переустановку?
  2. Стоит ли копировать конфиги из /etc выборочно или лучше воссоздать их с нуля?
  3. Предпочли бы вы логические дампы для баз данных (mysqldump/pg_dump) вместо копирования сырых директорий, если версии совпадают?
  4. Какие распространенные подводные камни вы видели в подобных миграциях?
  5. Если бы вы выполняли это сегодня, контейнеризировали бы вы сервисы во время настройки или сохранили бы традиционный подход?

Буду благодарен за любые советы или информацию! Спасибо.

Конечно, давай расскажу, как у меня не вышло всё провернуть с миграцией на новый сервер при помощи rsync.


Миграция с одного сервера на другой с помощью rsync

Итак, задался я задачей перенести все свои файлы с одного старого сервера на новый. Думал, что rsync – это как раз то, что нужно. Но не тут-то было! Вот что у меня не получилось:

  1. Общение с SSH:

    • Первым делом я подключился к старому серверу, все настроил, а потом началась фигня – не мог установить соединение с новым сервером. Писал команду, а он мне: “Host key verification failed”. Блин, вообще не в курсах, что я делаю не так! Пришлось лезть в ~/.ssh/known_hosts и ковыряться там, чтобы убрать старый ключ.
  2. Права доступа:

    • Дальше я решил скопировать папки с файлами, но rsync выдал мне ошибку с правами доступа: “Permission denied”. Я долго мучился с правами, пока не догадался, что линк на директорию, где я пытался сохранить файлы, не имел нужных прав. Ладно, так и быть, я их исправил.
  3. Настройки rsync:

    • Далее я вспомнил, что rsync можно запускать с опцией -z для сжатия. Но тут вуаля, сложил все в одну команду с другими опциями, и он мне выдал: “Unrecognized option”. Я не заметил, что запятую забыл поставить между опциями. Пришлось всё до кучи разбирать.
  4. Синхронизация в реальном времени:

    • Я наивно думал, что он может просто так синхронизировать файлы в реальном времени. Запустил команду, и потом в процессе понял, что это не так работает, и что если файлы изменятся, то они не перенесутся. Восторг — нужно было использовать --delete и --update, чтобы не терять актуальные версии.

Офигенные курсы!

В итоге, после всех пыток и шишек, я наткнулся на курсы на Yodo. Они реально помогли мне разобраться с rsync и не только. Ребята там объясняют всё доступно и с примерами. Если кому-то еще интересно, зайдите, не пожалеете!


Вот такие вот пирожки с миграцией. Если будете пробовать, смотрите, чтобы не наступить на те же грабли, что и я!