инфра/гид

Хранилище для бэкапов в S3: какой класс выбрать и как настроить restic

Обновлено08.11.2026 Цены проверены08.11.2026Источникdocs.selectel.ru, restic.readthedocs.io, selectel.ruЧтение11 мин .md
Коротко

Для ежедневных бэкапов сервера через restic берите холодный класс S3: хранение от 1,25 ₽ за ГБ/мес, то есть 200 ГБ копий ≈ 250 ₽ в месяц (наш расчёт, без запросов и трафика). Ледяной класс дешевле в хранении — от 0,89 ₽ за ГБ/мес, но запросы в нём самые дорогие, а restic при каждом запуске и чистке старых копий делает их много. Ледяной оставьте для архивов, которые кладут один раз и почти не трогают.

В этой статье
Наш выбор

Для ночных копий одного-двух серверов — отдельный бакет в холодном классе S3 и restic с ключом, который видит только этот бакет.

Класс
холодное хранение, отдельный бакет под копии
Цена от
1,25 ₽ за ГБ/мес; 200 ГБ ≈ 250 ₽/мес (наш расчёт)
Бесплатно
входящий трафик, трафик внутри Selectel, запросы DELETE
Отдельно
запросы GET/HEAD/PUT/POST/COPY и исходящий трафик в интернет — ставки в калькуляторе
Когда не подходит
нужна копия, которую нельзя удалить даже с ключом сервера, или образ всего диска
Хранилище S3 в Selectel

Реклама. АО «Селектел», ИНН 7810962785, selectel.ru. erid: 2VtzqvP4DFL

Что нужно понять за минуту

Бэкап живёт отдельно от сервера: на другом диске, в другом дата-центре, в другом аккаунте. Самый дешёвый способ сделать так для одного или нескольких серверов — объектное хранилище S3 и программа, которая сама отправляет туда копии по расписанию. Мы используем restic: он шифрует данные на сервере до отправки, отправляет только изменившиеся куски файлов и хранит историю копий на нужные даты.

В S3 вы платите за три вещи: объём хранения, запросы к API и исходящий трафик. У Selectel три класса хранения, и они по-разному делят эти деньги:

  • Стандартное — дорогое хранение, дешёвые запросы и трафик. Для данных, которые постоянно читают.
  • Холодное — всё «средне». Для резервных копий и архивов, которые иногда читают.
  • Ледяное — самое дешёвое хранение и самые дорогие запросы. Для данных, к которым обращаются очень редко. Минимального срока хранения у ледяного класса, по документации, нет: удалить копию можно в любой момент. Ледяной класс есть только в пуле ru-3 (Санкт-Петербург).

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

Сколько стоит

Хранение 100 ГБ, 200 ГБ и 1 ТБ копий в каждом классе. Объём — то, что реально лежит в бакете после дедупликации. Запросы и исходящий трафик не учтены: Selectel публикует их ставки только в калькуляторе.

Класс Для каких копий Хранение 1 ГБ в месяц 200 ГБ (наш расчёт) 1 ТБ (наш расчёт)
Ледяное архив «положил и забыл», ежемесячные снимки без чистки 0,89 ₽ за ГБ/мес ≈ 178 ₽ ≈ 890 ₽
Холодное ежедневные копии restic с чисткой старых 1,25 ₽ за ГБ/мес ≈ 250 ₽ ≈ 1 250 ₽
Стандартное копии, которые постоянно читают и сверяют 2,56 ₽ за ГБ/мес ≈ 512 ₽ ≈ 2 560 ₽

проверено 08.11.2026 · S3 Selectel · цены с НДС 22 %, «от»

Формула расчёта: объём в ГБ × цена хранения 1 ГБ, 1 ТБ = 1 000 ГБ. Например, 200 × 1,25 ≈ 250 ₽. Посчитать свой объём с запасом на рост удобнее в калькуляторе S3.

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

Способ Что копирует Цена
restic + S3, холодный класс файлы и дампы баз, которые вы выбрали 1,25 ₽ за ГБ/мес + запросы
Бэкапы сетевых дисков облачного сервера сетевой диск сервера целиком 4,50 ₽ за ГБ/мес
Veeam Agent сервер целиком: Windows, Linux, macOS 2 010 ₽/мес за сервер + 2,24 ₽ за ГБ/мес

проверено 08.11.2026 · бэкапы дисков · Veeam Agent

Как выбрать класс

Главная ловушка — ледяной класс для ежедневных копий. Restic при каждом запуске читает индекс репозитория, создаёт и снимает файл блокировки, а при чистке старых копий (prune) скачивает и переупаковывает часть данных. Всё это запросы, а в ледяном классе они самые дорогие. Сколько именно запросов сделает ваш репозиторий, заранее не скажет никто, поэтому мы советуем простое правило:

  • ежедневные копии с чисткой старых → холодный класс;
  • отдельный архив раз в месяц или квартал, без чистки → ледяной класс (бакет в пуле ru-3);
  • данные, которые постоянно читают → стандартный класс, но это уже не бэкап.

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

Второй неочевидный момент — служебные данные. Каждый объект в бакете занимает место под метаданные, и оно оплачивается: 64 КБ на объект в холодном классе и 128 КБ в ледяном. Restic складывает данные в крупные файлы-пачки (по умолчанию около 16 МБ), поэтому для него это копейки. А если копировать миллион мелких файлов по одному, в ледяном классе только метаданные займут ≈ 122 ГБ (наш расчёт: 1 000 000 × 128 КБ ÷ 1 024 ÷ 1 024). Так что для бэкапа «как есть» без упаковки ледяной класс может оказаться самым дорогим.

Как настроить restic

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

1. Бакет и ключ только для него

В панели Selectel создайте приватный бакет в холодном классе, например backup-web1. Класс задаётся при создании бакета, поменять его потом нельзя. Пул выберите в другом дата-центре, не там, где стоит сервер: в однозональных пулах (ru-1, ru-3, ru-7 и других) реплики лежат внутри одного ЦОД, а мультизональный ru-6 раскладывает их по трём. Не каждый класс есть в каждом пуле — это видно при создании бакета.

Не давайте restic ключ от всего аккаунта. Создайте сервисного пользователя с ролью s3.bucket.user и выпустите ему S3-ключ (пару Access Key и Secret Key). С такой ролью доступ задаётся политикой бакета: разрешите в ней этому пользователю просмотр списка объектов, чтение, загрузку и удаление объектов в backup-web1. Удаление обязательно: без него restic не снимет свои блокировки и не почистит старые копии. Домен S3 API для подключения зависит от пула — он указан в документации Selectel и в панели.

2. Установка и настройки

apt install restic
restic version

Ключи и адрес — в файле, который читает только root:

umask 077
cat > /root/.restic-env <<'EOF'
export AWS_ACCESS_KEY_ID="ACCESS-KEY-ИЗ-ПАНЕЛИ"
export AWS_SECRET_ACCESS_KEY="SECRET-KEY-ИЗ-ПАНЕЛИ"
export RESTIC_REPOSITORY="s3:https://АДРЕС-S3-ИЗ-ПАНЕЛИ/backup-web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_DEFAULT_REGION="ru-1"  # пул вашего бакета
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass

Сразу сохраните содержимое /root/.restic-pass в менеджер паролей. Без него копии не расшифровать.

3. Репозиторий и первая копия

. /root/.restic-env
restic init
restic backup /etc /var/www --exclude-caches
restic snapshots

4. Скрипт: файлы, дамп базы и чистка

/usr/local/bin/backup.sh:

#!/bin/bash
set -euo pipefail
. /root/.restic-env

# 1. Файлы сайта и конфиги
restic backup /etc /var/www --exclude-caches --tag files --quiet

# 2. Дамп базы прямо в restic, без временного файла на диске
sudo -u postgres pg_dump -Fc mydb \
  | restic backup --stdin --stdin-filename mydb.dump --tag db --quiet

# 3. Храним 7 ежедневных, 4 еженедельные и 6 ежемесячных копий
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune --quiet

# 4. Отметка об успехе — по ней работает алерт
date +%s > /var/lib/restic-last-success

Файлы работающей базы копировать нельзя — только дамп. set -o pipefail нужен, чтобы ошибка pg_dump в конвейере остановила скрипт, а не прошла молча. Но снимок с оборванным дампом restic при этом всё равно сохранит — его придётся найти по тегу db и удалить вручную. Надёжнее в restic 0.17 и новее: restic backup --stdin-filename mydb.dump --stdin-from-command -- sudo -u postgres pg_dump -Fc mydb. Тогда restic сам увидит, что команда завершилась с ошибкой, и снимок не создаст. Версию покажет restic version: в старых дистрибутивах из apt может прийти более ранняя. Если база у вас управляемая, а не своя, схема та же, меняется только строка подключения к pg_dump. Чего managed-база не делает сама, разбираем в гайде про облачные базы данных.

5. Расписание на systemd

# /etc/systemd/system/restic-backup.service
[Unit]
Description=Restic backup to S3
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Nightly restic backup

[Timer]
OnCalendar=*-*-* 03:30
RandomizedDelaySec=15m
Persistent=true

[Install]
WantedBy=timers.target
chmod +x /usr/local/bin/backup.sh
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

Persistent=true запустит пропущенную копию, если сервер был выключен в 03:30. Ошибки смотрите в journalctl -u restic-backup.service.

6. Проверка, что копии правда есть

Активный таймер ещё не значит, что копия записалась. Проверяйте результат, а не расписание:

# сколько часов назад была последняя удачная копия
echo $(( ( $(date +%s) - $(cat /var/lib/restic-last-success) ) / 3600 ))

# раз в неделю: целостность и выборочное чтение 5 % данных
restic check --read-data-subset=5%

# раз в месяц: восстановить один файл и сравнить
restic restore latest --target /tmp/restore-test --include /etc/hostname

Первое число отправьте в мониторинг и поставьте алерт, если оно больше 26 часов. restic check с чтением данных делает запросы GET, а если сервер вне Selectel — ещё и тратит исходящий трафик, поэтому читаем выборку, а не всё.

Что не подойдёт и ограничения

  • Ключ restic может удалить копии. Restic нужны права на удаление, значит, тот, кто захватит сервер, доберётся и до бэкапов. Защита — копия, которую нельзя удалить: Object Lock в бакете (режим Compliance запрещает удаление всем до конца срока) или отдельный сервис S3 Vault. Учтите: Object Lock работает только вместе с версионированием, поэтому файлы, которые restic «удалил» при чистке, на деле остаются версиями до конца срока блокировки и оплачиваются. Отключить Object Lock после включения нельзя.
  • Версионирование не бесплатно. Если включить его в бакете с restic, старые версии удалённых при чистке файлов останутся и будут оплачиваться как обычные данные.
  • Неоплата стирает копии. Если на балансе нет денег, доступ к S3 блокируется, хранение продолжает тарифицироваться, а через 30 дней данные удаляются без восстановления — включая объекты под Object Lock. Включите уведомления о балансе и автопополнение.
  • Класс бакета после создания не поменять, а автоматического перевода копий из класса в класс по возрасту в документации Selectel нет. Архив для ледяного класса делайте отдельным бакетом в пуле ru-3 и отдельным репозиторием.
  • Restic копирует файлы, а не сервер целиком. Чтобы поднять сервер с нуля, понадобится переустановить систему и восстановить файлы. Если нужно поднимать сервер целиком из копии — это бэкапы дисков или Veeam из таблицы выше. Для 1С схема своя, её разбираем в гайде про резервное копирование 1С в облако.
  • Цену запросов и трафика заранее не узнать с сайта. Их ставки есть только в калькуляторе и панели. Первый месяц смотрите потребление в разделе S3 → «Потребление» и только потом решайте, не завести ли бакет другого класса.
  • Домашний NAS тоже нужен копии вне дома. Как совместить NAS и облако, разбираем в гайде NAS или облако.

Как мы сделали

Свою основную инфраструктуру мы бэкапим по той же схеме. Каждую ночь pg_dump выгружает все базы PostgreSQL на второй диск, а restic зашифрованно отправляет копию в S3-совместимое хранилище вне дома. Храним 7 ежедневных и 7 еженедельных копий. В первую ночь ушло около 29 ГБ баз и 3 ГБ конфигов, следом — около 166 ГБ вложений почты.

Где мы обожглись. Скрипт однажды молча перестал писать копии: второй диск не был смонтирован, а таймер при этом исправно числился активным. Мы добавили файл-маркер монтирования, без которого скрипт падает с ошибкой, и алерт «метрика бэкапа давно не обновлялась». Второй урок — про объём: из 166 ГБ вложений около 100 ГБ оказались дублями, одна картинка из подписи письма лежала 75 000 раз. Прежде чем платить за хранение, посмотрите, что именно вы храните.

Частые вопросы

Какое хранилище выбрать для бэкапов?

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

Сколько стоит облачное хранилище для бэкапов?

В Selectel хранение начинается от 0,89 ₽ за ГБ/мес в ледяном классе и от 1,25 ₽ за ГБ/мес в холодном. 1 ТБ в холодном классе — около 1 250 ₽ в месяц по нашему расчёту. Сверху оплачиваются запросы и исходящий трафик, их ставки видны только в калькуляторе провайдера.

Как подключить restic к S3?

Restic берёт ключи из переменных AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY, а адрес репозитория — из RESTIC_REPOSITORY в виде s3:https://адрес-хранилища/имя-бакета. Пароль репозитория удобно хранить в отдельном файле и указывать через RESTIC_PASSWORD_FILE. После этого репозиторий создаётся командой restic init.

Какие права нужны restic в S3?

Restic должен видеть список объектов, читать, загружать и удалять их в своём бакете. Удаление нужно не только для чистки старых копий: restic при каждом запуске создаёт и снимает файлы блокировки. Доступ к остальным бакетам и проектам ему не нужен.

Где хранить пароль от репозитория restic?

Отдельно от сервера, который бэкапите: в менеджере паролей или хранилище секретов. Restic шифрует данные на сервере до отправки, поэтому без пароля восстановить копии не сможет никто — ни вы, ни провайдер.

Источники

  1. Объектное хранилище S3 — selectel.ruпроверено 08.11.2026
  2. Модель оплаты и цены S3 — docs.selectel.ruпроверено 08.11.2026
  3. Описание продукта S3 — docs.selectel.ruпроверено 08.11.2026
  4. Ограничения S3 — docs.selectel.ruпроверено 08.11.2026
  5. Версионирование объектов — docs.selectel.ruпроверено 08.11.2026
  6. Object Lock — docs.selectel.ruпроверено 08.11.2026
  7. Миграция в S3: сервисный пользователь и S3-ключ — docs.selectel.ruпроверено 08.11.2026
  8. Бэкапы облачных серверов — selectel.ruпроверено 08.11.2026
  9. Резервное копирование Veeam Agent — selectel.ruпроверено 08.11.2026
  10. S3 Vault — selectel.ruпроверено 08.11.2026
  11. Создание бакета: классы хранения и пулы — docs.selectel.ruпроверено 09.11.2026
  12. Управление доступом к S3: роль s3.bucket.user — docs.selectel.ruпроверено 09.11.2026
  13. Restic: бэкап из stdin и --stdin-from-command — restic.readthedocs.ioпроверено 09.11.2026
  14. Restic: репозиторий в S3 — restic.readthedocs.ioпроверено 08.11.2026

Связанные гайды