Бэкап VPS без боли: резервное копирование данных и проверка восстановления по стратегии 3-2-1 для сайта/бота/магазина

Бэкап VPS без боли: резервное копирование данных и проверка восстановления по стратегии 3-2-1 для сайта/бота/магазина

  1. Главная
  2. Блог
  3. Бэкап VPS без боли: резервное копирование данных и проверка восстановления по стратегии 3-2-1 для сайта/бота/магазина

Бэкап VPS нужен для защиты данных. Как правило, от их безвозвратной потери, которая может возникнуть как следствие взлома(-ов), «человекошибок» или банальных поломок оборудования.

Бэкап позволяет быстро восстановить работу, минимизируя простои. А потерю данных – и вовсе нивелируя.

Только вот на первый взгляд кажется, что нормально забэкапить ВПС – сложно. Причем, очень. Но на деле все несколько проще. Мы подготовили небольшой гайд – читайте дальше: разберемся, что к чему.

Что такое правила бэкапа 3-2-1 и почему это «золотой стандарт» защиты данных

Стратегия 3-2-1 – ходовой вариант для бэкапа VPS.

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

(3) копии данных

Первая цифра в формуле выше означает, что всегда должно быть как минимум три копии. Оригинал – первая из них. Дальше – две других. Они дадут право на ошибку: вы всегда сможете восстановить актуальную версию или откатиться к более ранней, если проблема вдруг обнаружится не сразу.

(2) разных типа носителей

Второй момент – это хранить копии на двух разных типах носителей.

Любой «физический» вариант может выйти из строя, и часто это происходит по +- схожим причинам. Иначе говоря: если хранить две копии на двух хардах, которые лежат друг на друге, и случится скачок напряжения, сгореть могут оба сразу.

Так что варианты следует комбинировать.

Например, можно держать одну копию на небольшом SSD для быстрого и оперативного восстановления, а вторую – на условном HDD. Облако – тоже не самый плохой вариант.

(1) оффсайт-копия

В довершении – оффсайт копия. Она хранится за пределами основного местоположения. Это – реальное спасение на случай форс-мажора.

Пожар, потоп, кража, даже банальные перебои в электричестве – все это может сделать локальные копии недоступными сразу же.

Собственно, по этой причине «выносная» копия обязательно должна находиться в ином месте. Например, в другом здании. Причем, «здании» – это как самый минимум. Кто-то переносит их даже в другую область, и нельзя сказать, что это прямо уж лишено смысла.

Выбираем инструмент: почему rsync идеален для наших задач

С теорией более или менее разобрались, но как вообще бэкапить сервера в реальном сценарии? VPS, например?

Rsync может хорошо помочь с этим. Его фишка – в так называемом «дельта-кодировании». То есть когда программа запускается повторно, она не перезаписывает файлы целиком. Вместо этого rsync анализирует, какие блоки данных изменились с прошлого раза, и передает лишь только их.

Это сильно экономит что трафик, что всегда уместно.

Также rsync работает поверх SSH, что априори означает наличие шифрования. Не нужно будет думать и о том, как защищать бэкапы по ходу дела. Rsync также позволяет настраивать исключения, так что при необходимости можно будет легко убрать из бэкапа папки с кэшем или временными файлами, чтобы не забивать свободное место мусором.

Важно: Если просто синхронизировать папку с сервера на внешний диск через rsync -av /source /destination, файлы в папке назначения сами по себе удаляться не будут — даже если на сервере их уже стерли. По умолчанию rsync только добавляет новые данные и обновляет изменившиеся. А вот удаление на принимающей стороне включается отдельно, через флаг --delete. То есть именно команда вроде rsync -av --delete /source /destination будет поддерживать точное зеркало источника. И это удобно, но с оговоркой: если файл удалили по ошибке, повреждение тоже может «доехать» до копии при следующей синхронизации.

Впрочем, rsync умеет не только зеркалить данные, но и помогать с версионными бэкапами. Для этого используют --link-dest: с ним можно создавать копии хоть за каждый день, при этом неизменившиеся файлы не дублируются физически, а переиспользуются через жесткие ссылки. В итоге место расходуется заметно экономнее, а на руках остаются отдельные точки восстановления. То есть при необходимости можно вернуть файл не только в его текущем виде, но и таким, каким он был неделю или даже месяц назад.

Проектируем архитектуру 3-2-1 для проекта

Начнем с основ.

Для сайта, бота или магазина архитектура должна давать быстрый RTO (время восстановления) и разумный RPO (точка восстановления). Что до схемы, то основная – это, собственно, и VPS сервер.

Также должна присутствовать локальная резервная копия. Внешняя – тоже. А вот носителей может быть несколько. На первом уровне, скажем, – локальный диск, а на втором – NAS/другой диск. На третьем же – удаленный сервер по SSH, который и будет обеспечивать вынос за пределы площадки.

Что копировать: готовим данные к бэкапу. Что не копировать

Просто копировать все подряд – идея сомнительная, если и вовсе не откровенно плохая. Это приведет к переполнению диска и к бардаку в целом. Так что нужен точечный подход. Ниже – список того, что всегда имеет смысл бэкапить:

  • Код и файлы проекта – обычно директории /var/www или /home/user/project.
  • Конфигурации – папки с настройками сервера (/etc/nginx, /etc/apache2), скрипты запуска и, естественно, SSL-сертификаты.
  • Базы данных – копировать служебные файлы БД (например, в /var/lib/mysql) «на горячую» нельзя – гарантированно получите сломанный архив. Поэтому перед синхронизацией всегда стоит сделать дамп. Как вариант – с помощью mysqldump или pg_dump.

А вот – без чего точно можно обойтись:

  • Виртуальные системы – папки /proc, /sys, /dev, /run и прочие создаются системой при загрузке. Копировать их нет никакого смысла.
  • Мусор и временные файлы – директории с кэшем (/var/cache) и временными файлами (/tmp). Их избегаем. А логи (/var/log) архивировать можно, но часто этого делать все равно не нужно. Если они и пригождаются, то в основном для аналитики.
  • Сами бэкапы – не храните резервные копии внутри папки, которую будете копировать. Сильно замусорится.

Пишем скрипт автоматического бэкапа с rsync

Скрипт пишется в rsync через командную строку. Чтобы скопировать содержимое одной папки в другую, используется флаг «-r».

Например: sudo rsync -r директория1/ директория2

Важно: Немного по поводу слэша выше – если он есть, в папку скопируются только файлы из «директории1». Если слэш опустить, скопируется сама папка целиком – вместе со всем содержимым внутри.

Для создания же «полноценных» копий чаще используется флаг «-a». Он сохраняет не только сами файлы, но и все их атрибуты: взять все те же права доступа.

Например: sudo rsync -a директория1/ директория2

По SSH, кстати, тоже можно создавать копии – команда в данном случае будет выглядеть примерно так:

sudo rsync -avz --progress --delete -e «ssh -p 2026» [email protected]:~/backup_data

Флаги -avz отвечают за архивный режим, вывод и сжатие при передаче. Ключ -delete – за синхронизацию. Он удаляет файлы, которых больше нет в оригинале. Конструкция -e «ssh -p 2026» указывает, что передача идет по SSH, а [email protected] – это просто учетные данные и сам адрес сервера-хранилища.

Важно: Как мы уже упоминали выше, кэш и логи можно (да и нужно) исключать из бэкапа. Но не упоминали мы того, что rsync предлагает под это целый отдельный ключ – собственно, exclude. Он подойдет, если нужно исключить один-два типа файлов. Например, --exclude *.png добавит в исключения все картинки этого формата.

Автоматизируем по расписанию (cron)

Ручной запуск бэкап-тестов хорош сам по себе, но для реальной работы, конечно, так или иначе понадобится автоматизация – всего самостоятельно не переделаешь. Самое первое и основное, что понадобится для ее настройки, – это поработать над сервером-клиентом. Тут нужно отредактировать конфиг /etc/rsyncd.conf.

Он заполняется: указываются пути для логов и файла процесса, а затем описывается отдельный блок данных. Также прописывается, какая папка будет копироваться (path = /var/log) и от имени какого пользователя (uid = root). Здесь же указывается путь к файлу с паролем (secrets file = /etc/rsyncd.scrt), где и будут храниться данные для авторизации бэкап-пользователя.

Важно: После создания файла на него обязательно выставляются права 0600 – то есть только рут-доступ.

На сервере же нужно будет написать скрипт, который сможет забирать данные.

Делается это путем создания файла – /bin/server_backup.sh. В нем описываются переменные: IP адрес сервера-источника (srv_ip), имя модуля (srv_dir=data), пользователя (srv_user=backup) и локальная папка. Последняя – как раз для сохранения бэкапов.

Строка запуска rsync в скрипте будет использовать все эти переменные для подключения к источнику и скачивания данных в папку /current/. Дополнительно стоит настроить и систему инкрементных бэкапов: старые версии файлов будут складываться в /increment/ с пометкой даты.

Когда скрипт отлажен и нормально запускается вручную, остается добавить его в расписание. Для этого нужно открыть редактор планировщика (командой sudo crontab -e) и сделать пару вещей – синтаксис cron прост: пять полей (минута, час, день месяца, месяц, день недели) и команда. Например, запись 40 13 * * * /bin/server_backup.sh будет значить, что скрипт будет запускаться каждый день, и делать это в 13:40.

Проверка восстановления

Все сделано, но нужно убедиться в работоспособности. Вот как можно проверить бэкап:

  1. Развернуть изолированный тестовый хост с той же виртуальной платформой/хранилищем.
  2. Скопировать на тест-хост выбранный бэкап.
  3. Выполнить восстановление образа/файлов/дисков.
  4. Запустить VM и проверить загрузку ОС.
  5. На уровне приложений проверить сервисы (преимущественно сам сервер и БД).
  6. Сверить данные – контрольные суммы/количество файлов/базы.

Если все хорошо, то тестовую машину можно удалять. При проблемах – задокументировать ошибки и сделать откат.

Мониторинг и алерты: как понить, что бэкап сломался

Скрипт может и сломаться. Причин на то много, и вдаваться во все из них сейчас смысла нет. Куда важнее понимать, как все это дело обнаруживать.

И вот здесь отлично помогает постоянный мониторинг. А если конкретнее, то:

  • Логирование – всегда есть смысл парсить файл /var/log/backup.log. Нужно периодически проверять, не появляются ли там ошибки.
  • Подключение метрик – крайне желательно подключить и сторонние системы мониторинга. Они должны отслеживать «свежесть» бэкапа и его размер. С первым все понятно, что до второго – если он стал подозрительно небольшим, возможно, данные попросту не скопировались.
  • Настройка алертов – настройте себе отправку уведомлений при сбое задачи в cron. Сделать это можно хоть на почту. Ну или в любое другое место, куда будет удобно. Для критичных проектов желательно использовать несколько разных каналов.

Итог здесь довольно простой: бэкап VPS — это не про «на всякий случай», а про нормальную и предсказуемую работу проекта. Один раз собрать внятную схему, понять, что именно копировать, куда складывать копии и как потом все это поднимать обратно, — уже половина дела. Дальше остается только следить, чтобы механизм действительно работал. Потому что сам по себе факт наличия бэкапа еще ничего не гарантирует. Гарантию дает только успешное восстановление — без паники, спешки и неприятных открытий в самый неподходящий момент.

Читайте также

Все статьи
Для чего нужны резидентские прокси в арбитраже трафика?

Для чего нужны резидентские прокси в арбитраже трафика?

Резидентские прокси стали важным инструментом для специалистов по арбитражу трафика. Они помогают работать с рекламными платформами, анализировать офферы, тестировать рекламные кампании и управлять не

MobileProxy.Space в 2026: полный обзор мобильных, резидентных и серверных прокси

MobileProxy.Space в 2026: полный обзор мобильных, резидентных и серверных прокси

Подробный обзор сервиса MobileProxy.Space в 2026 году: мобильные, резидентные и серверные прокси, тарифы, настройка, реальные кейсы и советы по выбору для бизнеса и специалистов. Давайте че

Лучшие сервисы распознавания captcha для VPS и серверной автоматизации

Лучшие сервисы распознавания captcha для VPS и серверной автоматизации

Сервис распознавания captcha стоит оценивать не только по скорости ответа. Гораздо важнее, насколько часто он помогает успешно завершить весь сценарий автоматизации. Быстрый ответ бесполезен, если са

Как запустить Google Ads в 2026 году без банов: полный гайд от сервиса клоакинга Adspect.ai

Как запустить Google Ads в 2026 году без банов: полный гайд от сервиса клоакинга Adspect.ai

Google Ads остаётся одной из самых прибыльных, но и самых сложных площадок для арбитража трафика в 2026 году. Модерация стала жёстче, системы обнаружения клоакинга — умнее, а обычные IP-базы и п

Для чего нужны резидентские прокси в арбитраже трафика?

Для чего нужны резидентские прокси в арбитраже трафика?

Резидентские прокси стали важным инструментом для специалистов по арбитражу трафика. Они помогают работать с рекламными платформами, анализировать офферы, тестировать рекламные кампании и управлять не

MobileProxy.Space в 2026: полный обзор мобильных, резидентных и серверных прокси

MobileProxy.Space в 2026: полный обзор мобильных, резидентных и серверных прокси

Подробный обзор сервиса MobileProxy.Space в 2026 году: мобильные, резидентные и серверные прокси, тарифы, настройка, реальные кейсы и советы по выбору для бизнеса и специалистов. Давайте че

Лучшие сервисы распознавания captcha для VPS и серверной автоматизации

Лучшие сервисы распознавания captcha для VPS и серверной автоматизации

Сервис распознавания captcha стоит оценивать не только по скорости ответа. Гораздо важнее, насколько часто он помогает успешно завершить весь сценарий автоматизации. Быстрый ответ бесполезен, если са

Как запустить Google Ads в 2026 году без банов: полный гайд от сервиса клоакинга Adspect.ai

Как запустить Google Ads в 2026 году без банов: полный гайд от сервиса клоакинга Adspect.ai

Google Ads остаётся одной из самых прибыльных, но и самых сложных площадок для арбитража трафика в 2026 году. Модерация стала жёстче, системы обнаружения клоакинга — умнее, а обычные IP-базы и п

Telegram