03 авг. 2025 г.·8 мин

Бэкап restic и borg в S3: настройка, шифрование, тесты

Бэкап restic и borg в S3: настройка шифрования, расписание, контроль окна, регулярные тесты восстановления и типичные ошибки.

Бэкап restic и borg в S3: настройка, шифрование, тесты

Что значит «без коммерческих агентов» и зачем это нужно

«Без коммерческих агентов» обычно означает, что вы не ставите на каждый сервер или рабочую станцию проприетарный агент от вендора бэкапа и не завязываетесь на его лицензии, закрытый формат и отдельную консоль. Вместо этого используются простые инструменты вроде restic или borg, а данные отправляются в S3-совместимое хранилище.

На практике такой подход часто проще и надежнее. Меньше движущихся частей: один бинарник, понятные команды, шифрование на стороне клиента, обычные логи. Если завтра нужно восстановиться на другом железе, вам не нужен «тот самый» агент и сервер управления. Достаточно ключей и доступа к репозиторию.

Минусы тоже есть. Без единого GUI сложнее видеть картину по всем узлам и быстро понимать, кто давно не бэкапился. Обычно это компенсируют дисциплиной и простыми заменами: единый шаблон конфигов и именования репозиториев, централизованный сбор логов с уведомлениями о провалах, регулярные тесты восстановления по расписанию, короткие отчеты (что копировали, сколько заняло, сколько данных добавилось).

Важно понимать границы. Restic и borg в S3 отлично закрывают файловые данные: каталоги, конфиги, дампы баз данных, снимки важных папок на серверах и виртуалках. А вот консистентные бэкапы сложных приложений все равно требуют сценариев: корректно остановить сервис или сделать дамп, проверить восстановление, убедиться, что приложение действительно стартует.

Подход хорошо подходит, если у вас один сервер в офисе, несколько филиалов, небольшая виртуальная среда или парк рабочих станций и серверов (например, на типовых ПК и стойках), где важны прозрачность, контроль и независимость от конкретного вендора.

Базовая схема: что копируем, куда и как защищаем

Минимальная рабочая схема для бэкапа restic и borg в S3 состоит из трех частей: источник данных (сервер или рабочая станция), репозиторий бэкапа (куда пишутся снапшоты) и S3-совместимое хранилище как удаленная цель. Поверх этого всегда есть еще два слоя: ключи шифрования и правила доступа.

Обычно копируют не весь диск, а конкретные каталоги и данные, которые реально нужно вернуть: базы, файлы пользователей, конфиги, ключевые папки приложений. Систему целиком часто проще восстановить из образа или через автоматизацию, а данные вернуть из бэкапа.

Шифрование в restic включено по смыслу всегда: репозиторий шифруется паролем, а на стороне S3 лежат только зашифрованные блоки. У Borg шифрование зависит от режима при инициализации репозитория, поэтому важно один раз осознанно выбрать вариант с шифрованием и не держать репозиторий в открытом виде.

Ключевой вопрос: где хранить пароль и ключи. Самые практичные варианты:

  • переменные окружения и файл с правами только для root
  • системное хранилище секретов (если уже используете)
  • отдельный офлайн-носитель для аварийного доступа (на случай, если сервер потерян)

Доступ к S3 лучше сужать по двум осям: сеть и права. По сети разрешайте подключение только с тех машин, которые реально делают бэкап, и по возможности закрывайте остальное на уровне фаервола или политики доступа. По правам заведите отдельные учетные данные для бэкапа и разделите операции:

  • запись (append) для ежедневной работы
  • только чтение для проверок и тестов восстановления
  • отдельный админ-доступ, который не используется в расписании

Пример: в офисе госоргана в Казахстане можно настроить так, что файловый сервер пишет в S3-репозиторий ночью, а днем отдельная учетная запись только читает и раз в неделю делает тестовое восстановление во временную папку. Даже если ключ записи утечет, злоумышленнику будет сложнее незаметно удалить историю, если удаление и управление бакетом доступны только админ-ключом.

Restic или Borg: как выбрать без лишней теории

Restic и Borg решают одну и ту же задачу: делать «снимки» данных так, чтобы повторные бэкапы занимали меньше места. Оба поддерживают дедупликацию, сжатие (в разных формах) и шифрование на стороне клиента, то есть в хранилище уезжает уже зашифрованный набор блоков.

Разница обычно не в том, «кто лучше», а в том, как вы будете жить с этим каждый день: где лежит репозиторий, как запускать задания, как проверять состояние и как быстро восстанавливать.

Когда проще выбрать restic

Restic часто выигрывает там, где нужен бэкап в S3 без лишних промежуточных слоев. Он говорит с S3-совместимым хранилищем «из коробки», поэтому схема обычно прямолинейная: машина -> S3.

Restic подходит, если у вас:

  • S3-репозиторий как основной вариант (облако или S3 в своем ЦОД)
  • много одинаковых узлов и хочется одинаковых команд и одинаковых логов
  • минимум зависимостей в окружении и простая установка
  • важна понятная автоматизация через cron/systemd без сложной обвязки
  • нужно быстро подключать новые серверы по шаблону

Когда логичнее выбрать borg

Borg часто удобнее, если репозиторий вы держите на выделенном сервере и забираете данные по SSH. Это хороший вариант для сценария «центральный бэкап-сервер + много источников», особенно если S3 у вас только как внешняя копия через дополнительную синхронизацию.

Borg подходит, если вам ближе:

  • репозитории на файловой системе и доступ по SSH
  • строго контролируемая сеть без прямого выхода на S3 с рабочих серверов
  • модель «один бэкап-хост обслуживает всех»

Если команда небольшая, обычно выгоднее стандартизировать один инструмент. Так проще обучать дежурных, писать единые инструкции по восстановлению и не путаться в форматах репозиториев, ключах и командах проверок.

Подготовка S3-совместимого хранилища и доступов

Перед тем как настраивать бэкап restic и borg в S3, убедитесь, что выбранное хранилище действительно подходит. Термин «S3-совместимое» иногда означает «похоже на S3», но с нюансами, которые всплывают ночью, когда окно бэкапа уже закрывается.

Проверьте у провайдера вещи, которые чаще всего влияют на работу: поддержка AWS Signature v4, корректная работа больших объектов (multipart upload), лимиты на число запросов и размер объекта, а также формат адресации бакета (virtual-hosted или path-style). Если есть отдельный endpoint для региона, уточните его заранее и зафиксируйте в настройках.

Дальше разделите ресурсы. Делайте отдельный бакет под бэкапы и отдельного пользователя (или ключ) только для бэкапа. Это снижает риск случайного удаления и упрощает аудит.

Короткий чек-лист прав для пользователя бэкапа:

  • доступ только к одному бакету
  • чтение, запись, список объектов (без админских операций по аккаунту)
  • запрет на удаление, если это возможно в вашей модели доступа
  • отдельные ключи для тестовой и боевой среды

Если в хранилище доступно версионирование, включите его для бакета с бэкапами. Оно спасает, когда кто-то удалил или перезаписал объекты. Добавьте правила удаления (lifecycle), чтобы версии не росли бесконечно: например, хранить частые точки восстановления коротко, а редкие - дольше.

Секреты доступа храните так, будто это пароль от всего: не в общем чате и не в «заметках». Минимум - файл с правами 600 и доступом только сервисному пользователю. Лучше - системное хранилище секретов или механизмы systemd credentials.

В конце проверьте сеть: загрузите и скачайте тестовый файл на 1-5 ГБ с сервера, где будет идти бэкап (например, с вашей стойки или с сервера уровня GSE S200). Зафиксируйте реальную скорость и задержку, чтобы оценить, поместится ли копирование в доступное окно.

Настройка restic: пошаговый минимум для старта

Чтобы бэкап restic и borg в S3 был предсказуемым, начните не с команд, а со списка данных. Отметьте, что реально нужно восстанавливать (базы, документы, конфиги), и что можно пересобрать (кэши, временные файлы). Это сразу сокращает время копирования и уменьшает окно бэкапа.

Дальше подготовьте доступы к S3-совместимому хранилищу (ключ/секрет, имя бакета, путь) и выберите место, где будет храниться пароль репозитория. Пароль нужен всегда: restic шифрует данные на стороне клиента, и без пароля бэкап превращается в «невосстановимый архив».

Инициализация репозитория и первая проверка выглядят так (подставьте свои значения):

export AWS_ACCESS_KEY_ID="..."
export AWS_SECRET_ACCESS_KEY="..."
export RESTIC_REPOSITORY="s3:s3.example.local/backup-prod"
export RESTIC_PASSWORD="сильный_пароль"

restic -o s3.endpoint=s3.example.local init
restic snapshots

После init сделайте первый полный бэкап. На этом шаге важнее получить рабочий снимок, чем «идеальный» набор исключений:

restic -o s3.endpoint=s3.example.local backup /etc /home /var/lib/app
restic snapshots

Теперь добавьте исключения, чтобы не гонять лишнее. Обычно исключают:

  • каталоги кэшей (например, */cache*)
  • временные файлы (/tmp, */tmp*)
  • большие каталоги сборки и загрузок, если они не нужны для восстановления
  • логи, если у вас есть отдельная политика хранения логов

И последний обязательный шаг - «восстановление на пробу» в отдельную папку. Это занимает минуты, но сразу показывает, что пароль, доступ к S3 и структура данных в порядке.

mkdir -p /restore-test
restic restore latest --target /restore-test
ls -la /restore-test

Если тестовое восстановление прошло, у вас уже есть минимальная рабочая схема. Дальше имеет смысл закрепить исключения в файле, убрать пароль из переменных окружения и перейти к расписанию и контролю окна бэкапа.

Настройка borg: рабочая схема без сюрпризов

Схема бэкапа без агентов
Поможем спроектировать схему restic или borg с понятными ролями и доступами.
Обсудить

Borg хорош там, где нужен быстрый инкрементальный бэкап на уровне файлов и удобное восстановление. Важно помнить: Borg пишет в репозиторий как в обычную файловую систему, поэтому до S3-совместимого хранилища он обычно добирается через промежуточный слой.

Самые надежные варианты два. Первый - репозиторий на отдельном SSH-шлюзе (или бэкап-сервере) с обычным диском, а уже потом каталог репозитория копируется в S3 отдельной задачей. Второй - промежуточное хранилище, где S3 смонтирован как файловая система. Он удобнее, но чаще дает проблемы из-за задержек, блокировок и неполной POSIX-совместимости. Для Borg обычно безопаснее «сначала локально, потом выгрузить».

Инициализация и шифрование

Выберите режим ключей: проще всего repokey (ключ хранится в репозитории, доступ защищен паролем) или keyfile (ключ отдельным файлом, его тоже надо резервировать). Пример инициализации:

export BORG_REPO=ssh://backup@backup-gw/./repos/app1
export BORG_PASSPHRASE='СильныйПароль'

borg init --encryption=repokey-blake2 "$BORG_REPO"

Дальше договоритесь о понятных именах архивов. Практика: имя хоста + роль + дата, чтобы быстро искать и сравнивать:

borg create --stats --compression lz4 \
  "$BORG_REPO"::"srv1-app-{now:%Y-%m-%d_%H%M}" \
  /etc /var/lib/app

Запуск по расписанию делайте через cron или systemd timer. В схеме «restic/borg + S3» Borg часто отвечает за локальные инкременты, а выгрузка в S3 идет отдельной задачей после успешного создания архива.

Проверка и тестовое восстановление

Периодически запускайте проверку репозитория: она ловит повреждения и проблемы с диском до того, как понадобится восстановление.

borg check --verify-data "$BORG_REPO"

Тест восстановления делайте не «когда-нибудь», а регулярно. Минимум: восстановить один файл и целый каталог в отдельную папку.

mkdir -p /tmp/restore-test
borg extract "$BORG_REPO"::srv1-app-2026-01-11_0200 etc/app.conf
borg extract "$BORG_REPO"::srv1-app-2026-01-11_0200 --target /tmp/restore-test var/lib/app

Расписание и контроль окна бэкапа

Хороший бэкап живет по расписанию и не мешает рабочим сервисам. Для restic/borg чаще всего хватает cron или systemd-timer. Важнее не чем вы запускаете задания, а что и как проверяете после запуска.

Как сделать расписание

Начните с простого набора точек восстановления и усложняйте только если есть реальная потребность. Базовая схема обычно такая:

  • каждый день ночью: инкрементальный бэкап данных и конфигов
  • раз в неделю: «контрольная» копия + проверка целостности репозитория
  • раз в месяц: отдельная точка, которую вы точно не удалите раньше срока
  • после изменений: внеплановый бэкап перед обновлением или миграцией

Так вы покрываете и повседневные ошибки (удалили файл), и редкие проблемы (сбой после обновления).

Как держать окно под контролем

Окно бэкапа - это время, когда копирование влияет на диски, сеть и S3. Оцените его один раз и пересматривайте после роста данных: возьмите размер изменяемых данных за сутки, умножьте на 2 (запас), и сравните с реальной скоростью выгрузки и временем дедупликации.

Если бэкап мешает, ограничивайте нагрузку, а не «сдвигайте на потом». Рабочие приемы:

  • ограничить скорость: у restic есть лимиты на upload/download, у borg - remote-ratelimit
  • уменьшить параллелизм: меньше потоков часто дает более предсказуемую нагрузку
  • разделить задачи: базы и большие каталоги копировать в разное время
  • исключить лишнее: кэши, временные файлы и логи, которые можно восстановить иначе

Успех - это не «процесс что-то написал в лог». Считайте успешным только то, что завершилось корректным кодом: restic - 0, borg - 0 (код 1 у borg обычно означает «есть предупреждения», его стоит разбирать).

Сигнал о сбое должен приходить сам. Минимальный набор: письмо на дежурную почту, сообщение в рабочий мессенджер или автоматический тикет. Например, если ночной бэкап бухгалтерского сервера не уложился в окно, уведомление должно прийти утром до начала рабочего дня, а не в момент, когда срочно понадобится восстановление.

Хранение, ротация и проверки целостности

Выделенный бэкап-хост в офисе
Соберем отдельный узел для репозиториев и регулярных тестов восстановления.
Настроить

Хранилище бэкапов быстро превращается в свалку, если не договориться о простых правилах: сколько копий держим, когда удаляем и как убеждаемся, что архивы читаются. Для «бэкап restic и borg в S3» это особенно важно, потому что S3 обычно оплачивается по объему и операциям.

Правила хранения: сколько держать и почему

Начните с требований бизнеса и регуляторов, а потом сведите все к понятной схеме. Часто хватает сочетания «частые короткие» и «редкие длинные» копии.

  • Ежедневные: 7-14 дней, чтобы закрывать случайные удаления и быстрые откаты.
  • Еженедельные: 4-8 недель, чтобы пережить поздно замеченные проблемы.
  • Ежемесячные: 6-12 месяцев, если нужны отчеты, аудит или сезонные данные.
  • «Перед изменениями»: отдельный снимок перед обновлениями, миграциями и патчами.

У restic и borg есть встроенные механизмы retention (политики сохранения). Важно одно: правила должны быть одинаковыми для всех серверов одного типа, иначе сложно прогнозировать объем.

Политика удаления и защита от ошибок

Удаление делайте только через безопасные команды самого инструмента, а не руками в бакете. Перед тем как включать автоматическое prune/compact, проведите 1-2 недели в режиме «только отчет»: пусть задача пишет, что именно будет удалено.

Проверка целостности нужна по расписанию. Обычно достаточно:

  • быстрая проверка метаданных раз в неделю ночью или в выходные
  • полная проверка (глубже и дольше) раз в месяц в отдельное окно, когда нагрузка минимальна

Стоимость S3 и роль дедупликации

Дедупликация у restic и borg снижает рост хранилища, если в данных много повторов (например, файловые шары, профили, почтовые базы). Но первый полный бэкап все равно будет большим, а затем рост зависит от ежедневных изменений. Следите за двумя метриками: общий размер репозитория и «сколько добавилось за сутки». Так вы быстро заметите, что кто-то начал бэкапить временные файлы или логи без ротации.

Простой журнал изменений настроек

Даже без сложных систем полезно вести короткий лог изменений:

  • дата и причина (например, добавили исключение каталога)
  • кто согласовал
  • что поменяли в расписании/retention
  • ожидаемый эффект на окно бэкапа и объем

Так проще разбирать инциденты: «почему удалились старые копии» или «почему проверка целостности стала идти вдвое дольше».

Регулярные тесты восстановления: как делать системно

Бэкап без восстановления не считается бэкапом. Пока вы не попробовали вернуть данные и запустить сервис, вы проверили только то, что «что-то куда-то записалось». Ошибка ключа шифрования, неверные права, битая цепочка инкрементов или забытый пароль репозитория часто всплывают именно в день аварии.

Чтобы тесты не превращались в разовую проверку «для галочки», сделайте простой календарь: раз в месяц проверяйте восстановление одного файла или небольшой папки, а раз в квартал прогоняйте полный сценарий. Это одинаково важно и для restic, и для borg, и для варианта с S3, где добавляется риск с доступами и политиками хранения.

Где и как восстанавливать

Лучше восстанавливать не поверх живых данных. Подойдет отдельная VM, отдельный каталог на тестовом диске или небольшой стенд. В офисной инфраструктуре это может быть тестовая виртуалка на сервере (например, на rack-сервере класса S200) с отключенным доступом пользователей, чтобы не было случайной порчи.

Один рабочий цикл теста может выглядеть так:

  • выбрать «эталон» (файл, папку проекта, дамп базы) и дату восстановления
  • восстановить в тестовую локацию и сверить размер, количество файлов, выборочно хэши
  • проверить права (владельцы, группы, режимы), чтобы приложения могли читать данные
  • запустить приложение или сервис в тестовом режиме и проверить ключевой сценарий (логин, отчет, поиск)
  • удалить тестовые данные или заархивировать результат проверки

После каждого теста фиксируйте минимум: сколько заняло времени, какой объем восстановили, точные команды и шаги, итог (успех/частичный успех/провал) и причину, если что-то сломалось. Отдельно отмечайте, уложились ли в допустимое окно восстановления и не уперлись ли в пропускную способность сети или лимиты хранилища.

Если тест провалился, не откладывайте: исправление стоит вносить в тот же день, иначе к следующей аварии «временное» станет постоянным.

Частые ошибки и ловушки в настройке

Самая болезненная ошибка при работе с шифрованием - потерять пароль или ключ и понять это только в момент аварии. Для restic и borg это означает одно: данные в репозитории есть, но прочитать их нельзя. Минимум, который спасает: хранить секреты в менеджере паролей, иметь запасной способ доступа (например, запечатанный офлайн-контейнер) и заранее назначить ответственного, кто знает, где лежит план восстановления.

Вторая ловушка выглядит логично, но опасна: делать бэкап «рядом», то есть на тот же сервер, в тот же RAID или в то же облако под одной учетной записью. При взломе, ошибке администратора или сбое хранилища часто исчезает и рабочая копия, и резервная. Если вы делаете бэкап restic и borg в S3, разделяйте хотя бы уровни доступа и, по возможности, учетные записи.

Очень частая проблема - слишком широкие права к S3. Когда ключ может удалять бакеты и версии объектов, один неверный скрипт или компрометация ключа превращают резерв в пустоту. Давайте ключу только то, что нужно: запись в конкретный бакет, чтение для проверки и минимум прав на удаление, если ротация делается на стороне клиента.

Отдельный класс ошибок - исключения по маскам. Кажется, что вы аккуратно исключили временные файлы, а на деле не копируете базу, папку с вложениями или каталог с ключами приложения. Это часто происходит после изменений путей или переноса данных. Простое правило: после каждого изменения исключений делайте пробный прогон и смотрите, что именно попало в снимок.

Наконец, бэкапы часто «ломаются тихо»: ночь за ночью задания падают, а никто не замечает. Проверьте себя по короткому списку:

  • есть оповещение о неуспешном запуске и о превышении времени выполнения
  • виден последний успешный бэкап и его размер (чтобы заметить внезапное «0 МБ»)
  • ключи доступа к S3 имеют срок и понятную процедуру ротации
  • по расписанию делается проверка целостности репозитория
  • раз в месяц выполняется тестовое восстановление в отдельную папку или VM

Простой пример: после обновления приложения каталог с данными переехал с /var/lib на /srv, а исключения остались прежними. Бэкап продолжает «успешно» проходить, но восстановить нечего. Такие вещи ловятся только мониторингом размеров и регулярными тестами восстановления.

Пример сценария: офисная инфраструктура и S3 как внешняя копия

Стандартизировать парк оборудования
Подберем ПК, рабочие станции и серверы GSE под вашу типовую инфраструктуру.
Подобрать

Представим обычный офис на 15-30 пользователей. Есть файловый сервер с общими папками (договоры, сканы, проекты), отдельная машина под 1С и база данных, плюс несколько важных каталогов на сервере приложений (конфиги, отчеты). Задача простая: если сломается диск, сервер или кто-то удалит папку, данные должны вернуться быстро и без «охоты» по ноутбукам.

RPO и RTO лучше формулировать по-человечески. RPO - сколько данных вы готовы потерять: например, максимум 1 час работы бухгалтерии и 4 часа по общим папкам. RTO - как быстро нужно восстановиться: например, доступ к файлам за 2 часа, 1С за 4-6 часов (хотя бы на временный стенд).

Для такого кейса хорошо подходит бэкап restic и borg в S3: локальные снимки на быстрый диск для быстрых возвратов и внешняя копия в S3-совместимое хранилище на случай пожара, кражи или шифровальщика.

По расписанию это обычно выглядит так:

  • ночью: полный прогон (или «полный по логике», с дедупликацией), когда нагрузка минимальна
  • днем: короткие дельты каждые 1-2 часа только по самым важным данным
  • перед закрытием дня: отдельный бэкап базы 1С (дамп или штатный механизм) и сразу отправка во внешний репозиторий

Тест восстановления стоит сделать частью рутины. Раз в неделю восстановите выборку: пару папок с документами и один случайный файл «из глубины». Раз в месяц поднимите полный стенд: разверните сервер (можно на отдельной машине или виртуалке), восстановите базу и проверьте, что 1С реально открывается.

Понять, что «все в норме», помогают простые метрики:

  • возраст последнего успешного бэкапа (в часах) по файлам и по базе
  • длительность бэкапа и укладывается ли он в окно ночью
  • процент успешных задач за 7 дней (без ручных «перезапусков»)
  • время реального тестового восстановления (сколько минут до открытия нужного файла/базы)

Следующие шаги: закрепить результат и масштабироваться

Перед тем как выпускать бэкап restic и borg в S3 в прод, полезно навести порядок в мелочах. Именно они чаще всего ломают восстановление в самый нужный момент.

Чеклист перед запуском

Проверьте базу по короткому списку, и только потом ставьте расписание «как у взрослых»:

  • доступы: отдельные ключи для бэкапов, минимум прав, понятное имя репозитория
  • шифрование: пароль/ключи хранятся отдельно от сервера, есть резервная копия ключевого материала
  • тест восстановления: хотя бы один раз развернули файлы в пустую папку и проверили, что они открываются
  • окно бэкапа: вы знаете, сколько занимает полный и инкрементальный прогон, и это укладывается в ночь/выходные
  • логи и уведомления: видно, когда был последний успешный прогон и сколько данных ушло

Если тест восстановления проходит только «на словах», это не бэкап, а надежда.

Как масштабировать без хаоса

Когда бэкап охватывает не один сервер, а несколько ролей (БД, файлы, виртуалки), заранее решите, как разделяете ответственность и репозитории. Часто работает одна из простых моделей:

  • один репозиторий на сервер (проще искать и восстанавливать точечно)
  • один репозиторий на роль (например, отдельно базы, отдельно файловые данные)
  • разные репозитории по уровню доступа (чтобы админы приложений не имели доступа к критичным копиям)

Дальше все упирается в ресурсы. Отдельный сервер под бэкапы стоит добавить, если ночные окна не укладываются, растет нагрузка на прод или нужно хранить локальный буфер перед выгрузкой в S3. Обновление железа оправдано, когда компрессия/дедупликация «съедает» CPU, а проверка целостности начинает мешать работе.

Чтобы бэкап стал процедурой, внесите его в регламент изменений (что и как защищаем перед релизом), в работу с инцидентами (когда и кто запускает восстановление) и в аудит (периодичность тестов, хранение журналов, контроль доступа к ключам).

Если нужна помощь с инфраструктурой, у GSE.kz есть опыт системной интеграции. Для задач бэкап-сервера или узла под хранение могут подойти стойчные серверы GSE S200, а дальше важнее всего договориться о понятном SLO по восстановлению и регулярных проверках.

FAQ

Что конкретно значит «бэкап без коммерческих агентов»?

Это подход, когда на серверах и рабочих станциях не ставят проприетарные агенты конкретного вендора бэкапа и не завязываются на его лицензии и формат. Вместо этого используют инструменты вроде restic или borg и хранят резервные копии в S3-совместимом хранилище, сохраняя контроль над ключами и процессом восстановления.

Нужно ли бэкапить весь диск целиком или достаточно папок?

Обычно копируют данные, которые действительно нужно вернуть: каталоги приложений, конфиги, пользовательские документы и дампы баз данных. Операционную систему и окружение часто быстрее восстановить автоматизацией или образом, а данные — вернуть из бэкапа.

Как быстро выбрать между restic и borg под S3?

Restic чаще выбирают, когда хотите напрямую писать в S3 «из коробки» и быстро масштабировать одинаковую схему на много узлов. Borg удобен, когда есть центральный бэкап-сервер и вы забираете данные по SSH, а в S3 отправляете уже вторым шагом как внешнюю копию.

Что проверить в S3-совместимом хранилище до запуска бэкапов?

Сначала проверьте совместимость по критичным вещам: подпись запросов, работу с большими объектами и multipart upload, а также корректный endpoint и режим адресации бакета. Затем сделайте практический тест с той машины, где будет бэкап: загрузите и скачайте файл на несколько гигабайт и оцените реальную скорость, чтобы понять, уложитесь ли в окно.

Какие права выдавать S3-ключам, чтобы не потерять бэкапы?

Базовое правило — отдельный пользователь и отдельные ключи только для бэкапа, с правами только на нужный бакет. По возможности разделяйте ключи для записи, для чтения (тесты восстановления) и для администрирования, чтобы утечка одного ключа не дала возможность тихо удалить историю.

Шифрование в restic и borg включается автоматически или его нужно настраивать?

У restic шифрование по смыслу всегда включено, и без пароля репозиторий не восстановить. У Borg шифрование выбирается при инициализации репозитория, поэтому важно сразу включить режим с шифрованием и отдельно продумать, где хранится пароль и ключевой материал для аварийного восстановления.

Где хранить пароль репозитория и ключи, чтобы потом восстановиться?

Самый безопасный минимум — хранить секреты вне «обычных» файлов пользователя и вне общих чатов: либо в системном хранилище секретов, либо в файле с жесткими правами доступа для сервисного пользователя, плюс резервный офлайн-вариант на случай потери сервера. Важно заранее проверить, что по этому плану реально можно восстановиться, а не просто «лежит где-то пароль».

Какие первые шаги после `init`, чтобы бэкап стал надежным?

Сделайте первый рабочий снимок без попытки довести исключения до идеала, затем добавьте исключения и сразу повторите бэкап. Обязательно выполните тестовое восстановление в отдельную папку или тестовую VM, чтобы убедиться, что доступы к S3 и пароль правильные, а данные реально читаются.

Как понять, что бэкап укладывается в «окно», и что делать если нет?

Ориентируйтесь на скорость изменения данных и доступное время ночью: оцените суточный прирост, добавьте запас и сравните с реальной пропускной способностью до S3. Если не укладываетесь, сначала сокращайте объем (исключения, разделение задач по времени), затем ограничивайте нагрузку, и только потом усложняйте схему.

Как часто нужно делать тесты восстановления и что именно проверять?

Минимум — раз в месяц восстанавливать небольшой набор данных в отдельную локацию и проверять, что файлы открываются и права на месте. Раз в квартал полезно прогонять полноценный сценарий для критичных систем: восстановить дамп базы, поднять сервис в тестовом режиме и убедиться, что он стартует и выполняет ключевые операции.

Бэкап restic и borg в S3: настройка, шифрование, тесты | GSE