На канале в разное время было много упоминаний про консольную утилиту для бэкапа restic. Она популярна в последнее время, много статей и роликов видел с её участием. Не буду много про неё рассказывать, перечислю только основные плюсы. А далее покажу один практический пример.
▪️Есть под все популярные системы, состоит из одного бинарника на go, есть в базовых репозиториях.
▪️Все данные по умолчанию шифруются.
▪️Формат хранения данных в виде снепшотов с дедупликацией.
▪️Поддерживает хранилища: локальная директория, SFTP, S3, свой сервер rest с доступом по HTTP и некоторые другие.
▪️Встроенная проверка целостности данных.
▪️Все параметры можно передавать ключами и переменными.
Я покажу далее, как забэкапить данные с помощью restic в S3 бакет на примере хостера Selectel. Настройка будет плюс-минус идентичной для любого облачного провайдера. У меня S3 бэкапы лежат там, поэтому показываю на данном примере. У хостеров может быть немного запутанной схема предоставления доступа к бакетам, так что иногда приходится повозиться немного, если делаешь впервые.
1️⃣ Создаю бакет у провайдера. В данном случае иду в раздел Инфраструктура ⇨ S3 ⇨ Бакеты. Создаю новый:
◽️Тип бакета: Приватный
◽️Класс хранения: Холодное хранение
◽️Версионирование: отключено (restic сам будет заниматься версионированием)
◽️Тип адресации: vHosted
Далее в разделе Аккаунт ⇨ Сервисные пользователи добавляю нового пользователя, роль - Пользователь S3, Проект - выбранный проект, где создан бакет. Тут же перехожу во вкладку Доступ и создаю S3-ключи. Нужно записать Access key и Secret key. Они нам понадобятся при настройке Restic.
Возвращаюсь в настройки бакета, перехожу на вкладку Политика доступа, создаю политику, где выбираю полный доступ для только что созданного пользователя.
Бакет сделали, доступ настроили. Я получил следующие данные:
S3_HOST=https://s3.ru-1.storage.selcloud.ru
S3_BUCKET=restic55
ACCESS_KEY_ID=XXXXXXXXXX
SECRET_ACCESS_KEY=YYYYYYYYYY
2️⃣ Идём на сервер и устанавливаем Restic:
Параметры доступа к S3 и сам пароль от бэкапов задаются переменными окружения. Введём их, а перед этим отключим сохранение history, чтобы они там не осели:
Пароль
Теперь туда можно бэкапить:
Проверяем список бэкапов. В терминологии restic это snapshots:
У нас только один snapshot. Восстановим его:
В директории
Restic может автоматически ротировать снепшоты. Для этого у него есть набор ключей с гибкими настройками. Например:
🔹
🔹
🔹
И так далее для разных временных отрезков. Наглядный типовой пример политики хранения:
Храним 7 дневных бэкапов, 4 недельных, 12 месячных.
Вы можете написать свои bash костыли для Restic, а можете взять что-то готовое. Например, вот репозиторий, где есть скрипт для бэкапа в S3 с логированием, с некоторыми проверками, с хранением параметров и пароля доступа в отдельных файлах.
⇨ 🌐 Сайт / Исходники / Документация
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#backup #restic #s3
▪️Есть под все популярные системы, состоит из одного бинарника на go, есть в базовых репозиториях.
▪️Все данные по умолчанию шифруются.
▪️Формат хранения данных в виде снепшотов с дедупликацией.
▪️Поддерживает хранилища: локальная директория, SFTP, S3, свой сервер rest с доступом по HTTP и некоторые другие.
▪️Встроенная проверка целостности данных.
▪️Все параметры можно передавать ключами и переменными.
Я покажу далее, как забэкапить данные с помощью restic в S3 бакет на примере хостера Selectel. Настройка будет плюс-минус идентичной для любого облачного провайдера. У меня S3 бэкапы лежат там, поэтому показываю на данном примере. У хостеров может быть немного запутанной схема предоставления доступа к бакетам, так что иногда приходится повозиться немного, если делаешь впервые.
◽️Тип бакета: Приватный
◽️Класс хранения: Холодное хранение
◽️Версионирование: отключено (restic сам будет заниматься версионированием)
◽️Тип адресации: vHosted
Далее в разделе Аккаунт ⇨ Сервисные пользователи добавляю нового пользователя, роль - Пользователь S3, Проект - выбранный проект, где создан бакет. Тут же перехожу во вкладку Доступ и создаю S3-ключи. Нужно записать Access key и Secret key. Они нам понадобятся при настройке Restic.
Возвращаюсь в настройки бакета, перехожу на вкладку Политика доступа, создаю политику, где выбираю полный доступ для только что созданного пользователя.
Бакет сделали, доступ настроили. Я получил следующие данные:
S3_HOST=https://s3.ru-1.storage.selcloud.ru
S3_BUCKET=restic55
ACCESS_KEY_ID=XXXXXXXXXX
SECRET_ACCESS_KEY=YYYYYYYYYY
# apt install resticПараметры доступа к S3 и сам пароль от бэкапов задаются переменными окружения. Введём их, а перед этим отключим сохранение history, чтобы они там не осели:
# unset HISTFILE# export AWS_ACCESS_KEY_ID=XXXXXXXXXX# export AWS_SECRET_ACCESS_KEY=YYYYYYYYYY# export RESTIC_PASSWORD="ZZZZZZZZZZ"Пароль
RESTIC_PASSWORD нужно обязательно сохранить. Без него бэкапы не расшифровать, доступа к ним не будет. Инициализируем репозиторий:# restic init -r s3:https://s3.ru-1.storage.selcloud.ru/restic55Теперь туда можно бэкапить:
# restic backup -r s3:https://s3.ru-1.storage.selcloud.ru/restic55 /var/wwwПроверяем список бэкапов. В терминологии restic это snapshots:
# restic snapshots -r s3:https://s3.ru-1.storage.selcloud.ru/restic55....18eba378 2025-09-01 18:59:24 debian12-vm /var/www....У нас только один snapshot. Восстановим его:
# mkdir /tmp/restore# restic restore 18eba378 -r s3:https://s3.ru-1.storage.selcloud.ru/restic55 --target /tmp/restoreВ директории
/tmp/restore будут файлы этого снепшота. Restic может автоматически ротировать снепшоты. Для этого у него есть набор ключей с гибкими настройками. Например:
🔹
--keep-last N – последние N бэкапов🔹
--keep-daily N – для последних N дней, в которых есть один или несколько снимков, сохранять только самый последний снимок за каждый день🔹
--keep-within-daily duration – сохранять по одному последнему снимку, сделанному в течение указанного duration.И так далее для разных временных отрезков. Наглядный типовой пример политики хранения:
--keep-within-daily 7d --keep-within-weekly 1m --keep-within-monthly 1yХраним 7 дневных бэкапов, 4 недельных, 12 месячных.
Вы можете написать свои bash костыли для Restic, а можете взять что-то готовое. Например, вот репозиторий, где есть скрипт для бэкапа в S3 с логированием, с некоторыми проверками, с хранением параметров и пароля доступа в отдельных файлах.
⇨ 🌐 Сайт / Исходники / Документация
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#backup #restic #s3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍127👎4