Безпечно мігруйте дані VPS через rsync
Через rsync по SSH заздалегідь перенесіть звичайні файлові дані з вихідного VPS до цільового, потім ненадовго зупиніть запис, виконайте фінальну синхронізацію, перевірте застосунок і перемкніть трафік зі шляхом відкату. Rsync не є універсальним засобом живої міграції: бази, контейнери, завантажувальні файли, пристрої, секрети й активні черги потребують прикладного підходу.
Ключові факти
- Транспорт
- Rsync через автентифікований SSH
- Перша дія
- Інвентаризація даних і пробний запуск
- Узгодженість
- Зупинити чи призупинити запис для фінального проходу
- Безпечне правило
- Не використовувати `--delete` під час першої міграції
Інвентаризуйте до копіювання
Перелічіть файли застосунку, власників, ACL, розширені атрибути, бази, секрети, планові завдання, сервіси, правила екрана, DNS, сертифікати й зовнішні сховища. Підтвердьте достатню цільову місткість і сумісність користувачів, файлових систем, пакетів ОС та версій застосунку. Зменшуйте TTL DNS до перемикання лише за планом DNS; кеш може жити довше за очікування.
Створіть і перевірте незалежну копію джерела. Тримайте джерело незмінним і доступним під час першого передавання. Визначте перевірки успіху й умову відкату до оголошення вікна обслуговування.
- Не копіюйте віртуальні файлові системи
/proc,/sys,/devчи/runяк звичайні дані. - Використовуйте рідні засоби копіювання, реплікації чи дампу бази, де доречно.
- Ніколи не залишайте закриті ключі в історії команд або спільних нотатках.
Підготуйте дані застосунку з пробним запуском
Для каталогу на кшталт /srv/app/ перевірте операцію з джерела: sudo rsync -aHAX --numeric-ids --info=progress2 --dry-run -e "ssh -i /root/.ssh/migration_key" /srv/app/ admin@DESTINATION:/srv/app/. Замініть користувача, шлях ключа, призначення й шляхи даних. Кінцева риска означає копіювання вмісту вихідного каталогу замість створення зайвого рівня.
Перегляньте кожен шлях і помилку. Переконайтеся, що віддалений акаунт може безпечно писати до призначення; root-вхід не потрібний і часто вимкнений. Якщо пробний результат правильний, повторіть без --dry-run. Не додавайте --delete лише заради однаковості: помилкове джерело чи призначення може видалити цінні дані.
- Для великих передавань запускайте команду в стійкому термінальному сеансі.
- Обмежте смугу, якщо копіювання впливає на виробничий трафік.
- Запишіть параметри команди й версії засобів у запис міграції.
Призупиніть запис і виконайте фінальний прохід
Переведіть застосунок у документований режим обслуговування чи лише читання. Зупиніть точні сервіси запису підтримуваним способом, потім зробіть фінальну копію бази або завершіть реплікацію. Знову запустіть ту саму команду rsync, щоб передати лише змінені файлові дані. Зберігайте режим обслуговування до завершення перевірки.
Запустіть сервіси на цілі з потрібною конфігурацією, за можливості спершу обмежте публічний доступ і перевірте стан, вхід, запис, черги, сертифікати, журнали й залежності. Змінюйте DNS чи маршрут лише після успішних тестів. Не змінюйте разом версію застосунку й місце хостингу, якщо спільний ризик явно не прийнято.
- Запишіть час зупинки запису й результат синхронізації.
- Перевірте власників файлів та обов’язковий контроль доступу.
- Стежте за старими й новими точками під час переходу DNS.
Перевірте, спостерігайте й збережіть відкат
Для глибшого порівняння файлів виконайте початкову команду rsync із --checksum --dry-run у відповідне вікно; обчислення сум читає обидва набори й може бути дорогим. Для баз та об’єктних сховищ віддавайте перевагу прикладній перевірці цілісності. Після перемикання стежте за помилками, затримкою, ресурсами, фоновими завданнями й зовнішніми викликами.
Тримайте джерело цілим, але запобігайте розділеному запису до кінця вікна відкату. Потім виконайте план зберігання й безпечного видалення. Міграція завершена лише коли копії, моніторинг, документація й процедури відновлення стосуються цілі.
Джерела
Часті запитання
Чи може rsync безпечно скопіювати робочу базу?
Файлова копія активної бази може бути неузгодженою. Використовуйте підтримуваний дамп, резервну копію, координацію знімка чи реплікацію.
Чи варто використовувати `--delete`?
Не під час першої міграції. Якщо згодом потрібно, спершу запустіть із --delete --dry-run, перевірте обидва шляхи й збережіть відновлювану копію.
Чому змінилися дозволи?
Цільовому користувачеві може бракувати прав, числові ID можуть різнитися або цільова файлова система не підтримує ті самі ACL чи атрибути. Перевірте сумісність до перемикання.