Задать вопрос

Как сделать локальный бэкап VDS сервера Ubuntu + Docker?

Есть VDS сервер, на котором установлен Ubuntu, Docker, NGINX, PHP, MySQL и phpMyAdmin.
Если сделаю копию всех файлов сервера себе на комп, будет ли это полноценным бэкапом?

Задача — сделать локальный бэкап, чтобы потом мог закинуть образ на другой сервер.
Конфиг (ip, домены, порты) потом поменяю.
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Вам не нужны все файлы - только те, которые добавлены или изменены для работы. Делать копию - идея так себе, лучше изначально разворачивать гранулярно, например с помощью Ansible.
Ответ написан
Комментировать
@rPman
Да это будет работать (linux вообще универсальная ОС, лишь бы архитектура x86/x64/.. процессора подходила, исключение - gentoo, там привязка может быть буквально к модели процессора), возможно потребуются телодвижения для настройки загрузчика и переустановки ядра (linux-image-...), скорее всего, если аппаратный конфиг будет похож (например и там и там одни и те же диски, не по размеру а по сути, например один диск на ОС а другие на данные базы и файлы веб сервера или образы docker), то все заведется без проблем, я так переносил несколько раз очень странные конфиги, дублируя на целевой машине даже uuid разделов и lvm томов.

И нет, лучше так не делать, скорее всего вместе с ОС там будут установлены утилиты от провайдера, для управления этой виртуалкой, и они скорее всего будут плохо работать у другого провайдера (по уму так могут не делать, и провайдеру достаточно ssh ключей).

Правильный бакап почти полностью совпадает с инструкцией по установке приложения на сервер, в идеале, вместе с самим приложением должны идти скрипты резервного копирования и восстановления, или хотя бы список файлов и каталогов (если их нет то я настоятельно рекомендую их создать, вам же нужно как то в будущем проводить тестирование восстановления из бакапа).

Если документации нет, то придется реверсинженерить конфигруационные файлы nginx и php, чтобы понять, в каких каталогах хранятся файлы проекта, но остаются конфигурационные файлы сервера, настройки сети, файловой системы, снапшотов или томов (иногда они чувствительно настроены для проекта). Базы данных тоже нужно копировать с осторожностью, есть сами базы, они копируются штатными инструментами, а есть пользователи и права доступа, есть конфиги самого сервера баз данных (кстати они могут быть тоже привязаны к серверу, например к объему памяти) или к примеру настройки репликации.

И да, есть еще образы docker, хорошо их можно копировать не смотря на то что внутри (это одна из главных фич контейнеризации) - docker save и docker load. Осторожно, сетевой конфиг сервера (а именно имена сетевых интерфейсов и наличие bridge) в данном случае может потребовать дополнительных шевелений.

p.s. Есть способ облегчить реверсинженеринг:
В зависимости от используемого пакетного менеджера, можно получить список установленных пакетов, затем сдублировать установку простым запуском (для debian based дистрибутивов) apt install список_имен_пакетов_с_версиями или dpkg -i имя_файла.deb, если предварительно их скачать из репозитория apt download в отдельном каталоге с помощью chroot.
А затем банально сравнить списки файлов на оригинальной установке и этой фиктивной, все различия можно автоматически скопировать (новые, измененные и удаленные файлы). Я делал очень просто - формировал список файлов, в виде полный_путь_имя_файла размер дата_модификации (можно вместо размера и даты хеш md5 но это дольше и особого смысла не имеет, если нет злоумышленника, стремящегося помешать этому анализу) для оригинального каталога и сравниваемого, полученные файлы сортировал утилитой sort и сравнивал diff, полученный файл можно смотреть глазами а можно написать утилиту которая все будет копировать сама.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы