Блог
VPS · разборVPS и хостинг 8 мин чтения

Snapshot vs backup: почему это не одно и то же

Snapshot и backup путают, а между ними пропасть. Разбираем, что защищает от «сервер сдох», что от «rm -rf /», что от «ransomware» и как сделать нормальную стратегию.

«У меня же есть snapshot!» — фраза, за которой обычно следует потеря данных. Snapshot — не backup. Они защищают от разных сценариев, и правильная стратегия хранения данных должна использовать оба (плюс ещё пару вещей).

Разберёмся, чем реально snapshot отличается от backup, какие сценарии закрывает каждый, и как построить надёжную схему без переплаты.

Snapshot — точечная копия «на месте»

Snapshot — мгновенное фиксирование состояния диска в текущий момент. Технически: copy-on-write слепок на уровне block device. Живёт на том же хранилище, что и оригинал.

Что защищает: от логических ошибок (случайно удалил папку, испортил конфиг, неудачное обновление). Можно откатить за 30 секунд.

Что НЕ защищает: от физической потери диска, шифровальщика, полной потери VPS, злонамеренного администратора. Если сдох диск — сдох snapshot вместе с ним.

Осторожно

Snapshot на том же VPS — не backup. Если VPS удалят (случайно или намеренно), snapshot удалится вместе с ним.

Backup — независимая копия offsite

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

Что защищает: от всех сценариев, где сам сервер недоступен. Пожар в ЦОДе, банкротство хостера, санкции, компрометация root, ransomware — всё это snapshot не решает, backup решает.

Ключевые свойства настоящего backup: offsite, encrypted, versioned (несколько поколений), tested (проверяемый на восстановление).

3-2-1 rule

Классическая мнемоника надёжного хранения:

  • 3 копии данных (production + 2 backup).
  • 2 разных типа носителей (например SSD + S3-объектное хранилище).
  • 1 офсайт-копия — физически в другом ЦОДе.
На заметку

Расширение 2020-х: 3-2-1-1-0 — плюс 1 immutable-копия (в WORM-режиме, чтобы ransomware не смог перезаписать) и 0 ошибок при тестовом восстановлении.

Практика: snapshot для отката, backup для катастроф

Оптимальная схема для среднего проекта:

🔵 Snapshot (у хостера, платно):
   Каждые 6 часов автоматически, retention 3 дня
   Использовать: перед обновлением, при подозрительной активности
   Цена: €0.02/GB/мес

🟢 Backup ежедневный (restic → S3):
   Каждую ночь в 3:00, retention 14 дней
   Full: раз в неделю. Incremental: остальные дни.
   Цена: ~€0.5-1/мес для 20 GB данных

🟡 Backup недельный (offsite отдельный):
   Каждое воскресенье, отправить в Wasabi/BackBlaze B2
   Retention 12 месяцев
   Цена: ~€1-2/мес

Restic — практический пример

Restic — стандарт де-факто для incremental encrypted backup на Linux. Пример настройки:

apt install restic -y

# Инициализация S3 репозитория (BackBlaze B2 в примере)
export RESTIC_REPOSITORY="s3:s3.us-west-002.backblazeb2.com/mybackups"
export RESTIC_PASSWORD="<strong-password>"
export AWS_ACCESS_KEY_ID="<b2-app-key-id>"
export AWS_SECRET_ACCESS_KEY="<b2-app-key>"

restic init

# Первый full backup
restic backup /var/www /etc /home

# Ежедневный incremental — через cron
# 0 3 * * * /usr/local/bin/restic-daily.sh

# Retention
restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 12 --prune

Тестируйте восстановление

Правило номер один backup-стратегии: backup, который вы не восстанавливали хотя бы раз — не существует. Регулярно (раз в месяц минимум) поднимайте тестовый VPS и разворачивайте на него бэкап. Проверяйте, что БД доступна, файлы читаются, приложение запускается.

Классический факап: работает автобэкап 2 года, момент истины наступает — а восстановление даёт ошибку, потому что за это время поменялся формат MySQL, версия restic, права. Профилактика: тесты.

Совет

Автоматизируйте проверку восстановления через terraform + ansible + restic restore в CI-джобе. Раз в неделю тестовый VPS сам разворачивает бэкап и падает — если что-то не так.

Наш подход к backup

На всех managed-тарифах у нас включён автоматический daily-backup с retention 14 дней, хранится в отдельном ЦОДе через S3-совместимое хранилище. Snapshot доступен по запросу через панель. Для критичных проектов рекомендуем дополнительно свой restic → внешний B2/Wasabi.

Частые вопросы

Хостер говорит «у нас daily backup включён» — этого достаточно?
Спросите: где физически хранится, шифруется ли, тестируется ли восстановление, сколько поколений. Если ответ невнятный — сделайте свой offsite backup.
Snapshot можно как единственный backup?
Нет. Snapshot защищает только от логических ошибок в рамках одного VPS. От пожара, hostility, компрометации — нужен offsite backup.
Сколько хранить бэкапы?
Стандартно: 7 дней daily, 4 недели weekly, 12 месяцев monthly. Для регулированных данных — часто до 7 лет.
Restic vs Borg vs Duplicati?
Restic — лучше для S3, красивее CLI, растёт быстрее. Borg — быстрее локально, но плоскую S3 не любит. Duplicati — GUI-friendly, но менее надёжен.