База знаний
Правило 3-2-1: рабочая схема резервного копирования
Правило 3-2-1 для резервного копирования: три копии, два носителя, одна вне площадки. Схема, расширения 3-2-1-1-0 и 4-3-2, конфиг restic и чеклист.
СейчасЦелевая архитектура: как выглядит рабочий контур
- Целевая архитектура: как выглядит рабочий контур
- Что означает каждая цифра
- Два носителя или два устройства
- Чеклист быстрой проверки
- Расширения: 3-2-1-1-0 и 4-3-2
- Неизменяемые копии и защита от шифровальщика
- Эталонный сценарий на restic
- 1. Локальная копия
- 2. Удалённая копия
- 3. Политика хранения
- 4. Расписание
- 5. Проверка результата
- Восстановление важнее копирования
- Антипаттерны
- Выбор площадки для удалённой копии
- Полезные ссылки
- Утилиты из материала
- Следующий шаг
- Связанные материалы
Правило 3-2-1 — минимальный стандарт резервного копирования: три копии данных, на двух разных устройствах, одна копия вне площадки. Такой набор переживает отказ диска, кражу техники и аварию в серверной. Против шифровальщика базовой схемы уже мало: нужна копия, которую нельзя удалить с рабочей машины, — об этом отдельный раздел ниже.
Целевая архитектура: как выглядит рабочий контур
Сначала общая картина, к которой нужно прийти. Продуктивные данные лежат на рабочей машине или сервере. Рядом работает локальная копия для быстрого восстановления. Отдельно живёт удалённая копия для случаев, когда площадка недоступна физически.
flowchart LR
A["Продуктив: ноутбук или сервер"] --> B["Копия 2: внешний диск или NAS"]
A --> C["Копия 3: облако вне площадки"]
B --> D["Проверка целостности и тест восстановления"]
C --> DЛокальная копия отвечает за скорость: файл или база возвращаются за минуты. Удалённая копия отвечает за выживание данных, когда офис или дата-центр недоступны.
Что означает каждая цифра
| Цифра | Требование | Как выполняется на практике |
| 3 | Три копии данных: продуктив плюс два бэкапа | Рабочие файлы, локальная копия, удалённая копия |
| 2 | Хранение на двух независимых устройствах | Внутренний диск и внешний диск или NAS; облако добавляет третье устройство |
| 1 | Одна копия вне площадки | Объектное хранилище, облачный бэкап или диск, который физически лежит в другом здании |
Правило описывает не количество кнопок в интерфейсе, а количество независимых точек отказа. Если две копии лежат на одном компьютере, у вас одна копия.
Два носителя или два устройства
Формулировку приписывают фотографу Питеру Крогу: он описал схему в книге «The DAM Book: Digital Asset Management for Photographers» (2005), а в широкий оборот её вывела публикация US-CERT «Data Backup Options» 2012 года. Тогда под «двумя носителями» понимали разные типы: жёсткий диск, оптический диск, лента, флеш-накопитель — защита от устаревания формата и от одновременного отказа однотипного оборудования.
Backblaze до сих пор формулирует пункт как «two different media», но прямо оговаривает: сегодня это значит не то же, что в конце 2000-х. Практический смысл сместился к двум разным устройствам — локальный диск и облако считаются двумя носителями, даже если под капотом у обоих те же HDD или SSD. Ноутбук, внешний SSD и объектное хранилище условию соответствуют.
Чеклист быстрой проверки
Пройдите за пять минут и найдите слабое место контура.
Расширения: 3-2-1-1-0 и 4-3-2
Правило 3-2-1 остаётся точкой входа. Атаки шифровальщиков нацелены на сетевые каталоги и подключённые бэкапы, поэтому появились более строгие схемы.
| Схема | Что добавляет | Кому подходит |
| 3-2-1 | Базовая избыточность и географическое разнесение | Личные данные, небольшие сайты, домашние NAS |
| 3-2-1-1-0 | Одна копия офлайн или в неизменяемом хранилище, плюс ноль ошибок при регулярной проверке восстановления | Бизнес с реальным риском шифровальщика и требованиями к непрерывности |
| 4-3-2 | Четыре копии в трёх локациях, две из которых вне основной площадки | Критичные данные, сервис-провайдеры, инфраструктура клиентов |
Неизменяемые копии и защита от шифровальщика
Основной сценарий потери данных сегодня выглядит так: злоумышленник получает доступ к машине, находит подключённое хранилище бэкапов и удаляет копии перед шифрованием.
Что закрывает этот сценарий:
- Отдельные учётные данные. Ключ, которым пишет бэкап-агент, не должен позволять удаление старых объектов. Практическое ограничение:
restic forget --pruneфизически удаляет данные, поэтому ротацию выносят в отдельное задание с привилегированным ключом или держат репозиторий заrest-server --append-only. - Неизменяемость на стороне хранилища. В S3-совместимых хранилищах это
Object Lockв режимахGovernanceилиComplianceс фиксированным сроком удержания. РежимGovernanceснимается пользователем с правомs3:BypassGovernanceRetention, поэтому от злоумышленника с админским ключом защищает толькоCompliance. ПоддержкаObject Lockесть не у всех S3-совместимых провайдеров — проверяйте до переноса бэкапов. - Офлайн-копия. Внешний диск, который подключается только на время копирования.
- Шифрование на стороне клиента. Данные уезжают в облако уже зашифрованными, ключ хранится отдельно.
Compliance в S3 Object Lock не позволяет снять блокировку или сократить срок удержания никому, включая root-пользователя аккаунта; по документации AWS единственный способ удалить объект раньше срока — закрыть сам аккаунт. Сначала проверьте политику на тестовом бакете с коротким сроком.Эталонный сценарий на restic
Схема: локальная копия на внешнем диске, удалённая копия через restic в S3-совместимое хранилище с шифрованием на стороне клиента. Ниже встречаются две утилиты — коротко о каждой, чтобы разница между ними была понятна до команд.
restic — консольная программа резервного копирования с открытым кодом. Хранит данные снимками: при каждом запуске в репозиторий доезжают только изменившиеся блоки, но каждый снимок остаётся полной картиной каталога на момент запуска. Шифрование происходит на вашей стороне до отправки, поэтому владелец хранилища видит только зашифрованные пакеты. Работает с локальным диском, SFTP, S3-совместимыми хранилищами и Backblaze B2. Умеет ротацию снимков и проверку целостности репозитория штатными командами.rsync — стандартная утилита синхронизации файлов и каталогов, есть практически в любом Linux и macOS. Передаёт только изменившиеся части файлов, поэтому повторный запуск быстрый. Делает зеркало, а не историю: с флагом --delete копия повторяет источник, включая удаления. Это инструмент доставки и синхронизации данных, а не система версионных бэкапов.1. Локальная копия
Зеркало через rsync даёт быстрый доступ к текущему состоянию, но не хранит версий: удаление или шифрование файла уедет в копию при следующем запуске. Считайте его ускорителем восстановления, а полноценной второй копией — локальный репозиторий restic.
# быстрый доступ к текущему состоянию
rsync -aH --delete /srv/data/ /mnt/backup/mirror/
# версионная локальная копия с историей снимков
restic -r /mnt/backup/restic-repo backup /srv/data --tag localpg_dump, mysqldump --single-transaction) или используйте штатный механизм СУБД, и в бэкап кладите уже дамп.2. Удалённая копия
# параметры подключения храните в защищённом файле, а не в истории команд
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-backup-bucket"
export RESTIC_PASSWORD_FILE="/root/.restic-password" # ключ шифрования репозитория
export AWS_ACCESS_KEY_ID="<access-key-id>" # ключ с правами на запись
export AWS_SECRET_ACCESS_KEY="<secret-access-key>"
restic init # выполняется один раз
restic backup /srv/data --tag daily3. Политика хранения
# оставляем 7 дневных, 4 недельных и 12 месячных снимков, остальное удаляем
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune4. Расписание
# ежедневный запуск в 03:30 с записью лога
30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&15. Проверка результата
Минимальный сценарий, который подтверждает работоспособность контура:
restic snapshots # в списке есть снимок за сегодня
restic check --read-data-subset=5% # выборочная проверка целостности данных
# в общем репозитории добавьте --host и --path, иначе latest может указать на чужой снимок
restic restore latest --host "$(hostname)" --path /srv/data --target /tmp/restore-test
diff -r /srv/data /tmp/restore-test/srv/data && echo "restore OK"Признак успеха: команда restic check завершается сообщением no errors were found, а diff не находит расхождений. Если проверка не выполняется, копия существует только на бумаге.
restic вне сервера, который копируете. Без него зашифрованные данные не восстановит никто, включая вас.Восстановление важнее копирования
Бэкап оценивают не по факту наличия, а по времени и полноте возврата данных.
Зафиксируйте оба значения для каждого набора данных и сверяйте их с реальностью на квартальном тесте восстановления. Тест на пустом каталоге ничего не доказывает: восстанавливайте боевой объём и засекайте время.
Антипаттерны
| Антипаттерн | Почему опасно | Что делать вместо этого |
| RAID вместо бэкапа | Массив защищает от отказа диска, но не от удаления файла, шифровальщика и пожара | Считать RAID способом снизить простой и делать отдельные копии |
| Синхронизация вместо копирования | Удаление или шифрование файла мгновенно уезжает во все синхронизированные копии | Использовать версионные снимки с политикой хранения |
| Постоянно подключённый диск с бэкапами | Доступен тем же процессам, что и рабочие данные | Отключать диск или использовать неизменяемое хранилище |
| Копии в том же здании | Пожар, залив или изъятие техники уносят все копии сразу | Держать удалённую копию в другой локации |
| Бэкап без проверки | Повреждённый архив обнаруживается в момент аварии | Регулярный check и тестовое восстановление |
| Ключ шифрования рядом с копией | Компрометация хранилища раскрывает данные целиком | Хранить ключи в менеджере секретов отдельно от бэкапов |
Выбор площадки для удалённой копии
При выборе удалённого хранилища проверьте четыре параметра: стоимость исходящего трафика при восстановлении, поддержку версионирования и Object Lock, лимиты на скорость выгрузки, а также юрисдикцию площадки. Если в копиях есть персональные данные граждан России, базы данных, в которые эти данные записываются и в которых хранятся, должны находиться на территории РФ (ч. 5 ст. 18 152-ФЗ). Требование распространяется и на резервные копии, а не только на продуктив.
Полезные ссылки
- Backblaze, разбор правила и его современной трактовки: backblaze.com/blog/the-3-2-1-backup-strategy
- Backblaze, сравнение 3-2-1, 3-2-1-1-0 и 4-3-2: backblaze.com/blog/whats-the-diff-3-2-1-vs-3-2-1-1-0-vs-4-3-2
- CISA, Data Backup Options (Carnegie Mellon, US-CERT, 2012) — публикация, закрепившая правило за Питером Крогом: cisa.gov
- Документация restic: restic.readthedocs.io
- Документация rsync: rsync.samba.org/documentation.html
- AWS S3 Object Lock: docs.aws.amazon.com
Утилиты из материала
Всё, что упоминается в командах выше, с официальными сайтами и исходным кодом.
| Утилита | Роль в схеме | Сайт и документация | Исходный код |
| restic | Версионные снимки, шифрование, ротация, проверка целостности | restic.net · restic.readthedocs.io | github.com/restic/restic |
| rest-server | Сервер для репозиториев restic с режимом --append-only | документация в README | github.com/restic/rest-server |
| rsync | Зеркало текущего состояния для быстрого восстановления | rsync.samba.org · man rsync | github.com/RsyncProject/rsync |
| pg_dump | Целостный дамп PostgreSQL перед копированием файлов | postgresql.org/docs | github.com/postgres/postgres |
| mysqldump | Целостный дамп MySQL и MariaDB | dev.mysql.com/doc | github.com/mysql/mysql-server |
| cron | Запуск задания бэкапа по расписанию | man crontab | github.com/cronie-crond/cronie |
| diff | Сверка восстановленных файлов с оригиналом | gnu.org/software/diffutils | savannah.gnu.org/projects/diffutils |
Следующий шаг
Связанные материалы
- Статья: Как мы перегоняем терабайт с Яндекс.Диска на Synology под присмотром Codex
- Блог: Данные важнее модели
- База знаний: TimeWeb, Selectel, Beget и Yandex Cloud — выбор VPS и развёртывание
Если собираете контур резервного копирования для сайта, рабочих файлов или инфраструктуры команды и хотите свериться по схеме и рискам — пишите в Telegram @pimenov
Если хотите разобрать свою задачу — напишите мне Если хотите разобрать свою задачу — напишите мне.
Можно прийти с идеей, черновым контекстом или уже живой задачей. Помогу быстро понять, где реальный следующий шаг, а где лишний шум.
Обычно хватает 2–3 сообщений, чтобы понять, могу ли я здесь реально помочь и в каком формате лучше двигаться дальше.
Дальше по теме
Через 10 лет у вас будут миллиарды клиентов с кошельками. Только это будут не люди — это будут агенты. Разбираю, что это значит для тех, кто строит продукты сегодня.