Бэкапы: правило 3-2-1
| Формула | 3 копии, 2 типа носителей, 1 копия вне площадки |
|---|---|
| Автор формулировки | Питер Крог (The DAM Book, фотографы) |
| Расширения | 3-2-1-1-0 (одна неизменяемая/офлайн копия, 0 ошибок при проверке) |
| Ключевые метрики | RPO (допустимая потеря данных), RTO (время восстановления) |
| Инструменты | restic, BorgBackup, Kopia, rclone, pgBackRest, Veeam |
| Главная угроза сегодня | вымогатели, шифрующие и сами бэкапы |
Правило 3-2-1 — простая и общепринятая формула резервного копирования: храните 3 копии данных, на 2 разных типах носителей, причём 1 копия должна находиться вне основной площадки.[1][2] Его сформулировал фотограф Питер Крог в книге о хранении цифровых архивов, а затем правило стало стандартной рекомендацией и для домашних пользователей, и для компаний. Смысл в том, чтобы ни одна единичная беда — отказ диска, пожар, кража, ошибка администратора или вирус-вымогатель — не уничтожила все копии сразу.
Разбор формулы
- Три копии — рабочие данные плюс две резервные. Вероятность одновременной потери трёх независимых копий ничтожна.
- Два типа носителей — например, диск сервера и облачное хранилище, или NAS и внешний диск. Однотипные носители из одной партии часто выходят из строя похожим образом и в одно время.
- Одна копия вне площадки — в другом здании, городе или облаке. Пожар, затопление или изъятие оборудования не затронут её.
Современная версия 3-2-1-1-0 добавляет: ещё одна копия должна быть неизменяемой (immutable) или отключённой от сети (air-gapped), и ноль ошибок при проверке восстановления. Первое — ответ на вымогателей, которые сначала находят и удаляют резервные копии, а затем шифруют основные данные.[4]
Что не является бэкапом
| Механизм | Почему не бэкап |
|---|---|
| RAID | защищает от отказа диска, но не от удаления файла или шифрования — изменения мгновенно попадают на все диски |
Синхронизация (Dropbox, rsync --delete) |
удалённый или испорченный файл тут же удаляется или портится и в копии |
| Снимки (snapshots) на том же томе | спасают от ошибок, но погибают вместе с массивом |
| Репликация базы данных | DROP TABLE реплицируется на все узлы за доли секунды |
Бэкап — это независимая копия с историей версий, из которой можно восстановить состояние на определённый момент в прошлом.
RPO и RTO
Перед выбором схемы определяют две величины:[3]
- RPO (Recovery Point Objective) — сколько данных допустимо потерять. Ночной бэкап означает RPO до 24 часов; для базы с журналом транзакций — минуты или секунды.
- RTO (Recovery Time Objective) — за сколько нужно восстановиться. Скачать 5 ТБ из облачного «холодного» хранилища может занять сутки.
Разные данные требуют разных значений: база заказов — минуты, архив логов — дни.
Практика
Файлы и серверы. Инструменты с дедупликацией и шифрованием на стороне клиента — restic, BorgBackup, Kopia — хранят много версий почти без лишнего места и пишут в локальный каталог, по SSH или в S3-совместимое хранилище.[5]
restic -r s3:https://s3.example.com/backups init
restic -r s3:https://s3.example.com/backups backup /etc /srv/data --exclude-caches
restic -r s3:https://s3.example.com/backups forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
restic -r s3:https://s3.example.com/backups check --read-data-subset=5%
restic -r s3:https://s3.example.com/backups restore latest --target /tmp/restore-test
Запуск — по расписанию через cron или таймеры systemd, с оповещением о неудаче (см. Мониторинг и алертинг): тихо сломавшийся бэкап — классический сценарий катастрофы.
Базы данных. Копировать файлы работающей PostgreSQL нельзя — получится несогласованный снимок. Используют логические дампы (pg_dump) для небольших баз и физические бэкапы с архивом журнала WAL (pgBackRest, WAL-G) — они позволяют восстановить базу на любую секунду (point-in-time recovery).[6]
Неизменяемость. Object Lock в S3-совместимых хранилищах, режим «только добавление» (append-only) у Borg и restic через rest-server, отдельные учётные данные: сервер может записывать новые копии, но не удалять старые. Права на удаление — только у отдельной, хорошо защищённой учётной записи (см. Принцип наименьших привилегий).
Шифрование. Копия вне площадки должна быть зашифрована, а ключ — храниться отдельно от неё и от основного сервера. Потерянный ключ означает потерянный бэкап.
Главное — проверка восстановления
Резервная копия, которую ни разу не восстанавливали, — это надежда, а не бэкап. Регулярно:
- Восстанавливайте случайные файлы и целые системы на тестовый стенд.
- Проверяйте целостность хранилища (
restic check,borg check). - Засекайте время полного восстановления и сравнивайте с RTO.
- Записывайте процедуру восстановления так, чтобы её мог выполнить другой человек — в стрессовой ситуации и без доступа к упавшей системе.