«У меня же есть 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.