31 марта отмечают World Backup Day (Международный день резервного копирования). Удобный повод не для красивого статуса, а для проверки: есть ли свежая копия, открывается ли она, и не лежит ли единственный «бэкап» на том же диске, что и прод.
Бэкап в логике DevOps
В DevOps любят автоматизацию, наблюдаемость и спокойный on-call. Бэкап в том же духе: не разовый tar -czf «на всякий», а повторяемый процесс с расписанием, off-site, шифрованием, retention и регулярным restore-тестом. Копия, которую никто не восстанавливал, гипотеза, а не страховка.
Даже без апокалипсиса сценарии простые: ошибочный rm, кривой миграционный скрипт, ransomware, умерший SSD, «почистили» не тот бакет. 1 апреля рядом с 31 марта лишний мем, но реальные инциденты не ждут календаря.
Инструменты: от rsync до облака
- rsync точечная синхронизация на другой диск или хост. Понятный контроль «что куда». С
--progressвидно ход, с snapshot-схемами (hardlink/ротация каталогов) можно собрать простую историю версий. - BorgBackup дедупликация, сжатие, шифрование, репозиторий с версиями. Хорош для серверов и homelab, когда важны инкременты без раздувания диска.
- Restic похожий класс задач, удобные бэкенды (S3, B2 и др.), простой CLI. Часто выбирают, когда цель «set and monitor» в объектное хранилище.
- Veeam / Acronis энтерпрайз-контур (ВМ, агенты, политики, отчёты). Имеет смысл там, где уже есть лицензии и требования compliance, а не «вместо cron на одном VPS».
- cron / systemd timer то, без чего «инструмент» не становится процессом. Ночной прогон + алерт на ненулевой exit code важнее красивого GUI.
Минимальный каркас на rsync (идея, пути подставьте свои):
# пример: данные на второй диск / NAS rsync -aHAX --delete --info=progress2 \ /var/www/ /mnt/backup/www/ # лог + код возврата удобно слать в monitoring echo "rsync exit: $?" >> /var/log/backup-rsync.log
Для Borg/Restic логика та же: init репозитория один раз, дальше create/backup по расписанию, prune по политике, restore на staging.
Практические правила
- Проверяйте восстановление. Раз в квартал (или чаще для критичных систем) полный restore на чистый стенд. «Зелёный» статус job ≠ читаемый архив.
- Храните копии в разных местах (3-2-1). Три копии, два типа носителей, одна off-site (другой сервер, S3, лента что уместно).
- Шифруйте off-site. Утечка бэкапа с дампами БД и
.envхуже, чем отсутствие копии на флешке в ящике. - Несколько версий (retention). Иначе «бэкап есть», но в нём уже та же битая миграция, что в проде.
- Политика хранения. Сколько дней/недель, кто имеет ключи, где runbook на restore, что делать при смене пароля репозитория.
Типичный фейл
Идеально настроенный пайплайн, Terraform-бакет, шифрование и пароль/ключ репозитория только в голове одного человека или в одном менеджере без эскроу. В день аварии выясняется, что «как расшифровать» знает только отпуск. Ключи и доступ к restore часть backup-системы, не «отдельная магия».
Если серьёзный стек ещё не собран, начните с малого: важный каталог + внешний диск или S3 + расписание + один успешный restore. Дальше дедуп, алерты, runbook.
Кратко
- World Backup Day повод прогнать restore, а не только сделать снимок;
- rsync / Borg / Restic (+ cron) закрывают большинство self-hosted сценариев;
- 3-2-1, шифрование off-site, retention, мониторинг job;
- ключи восстановления и runbook храните не в единственной голове.
