ServerAdmin.ru
31.6K subscribers
855 photos
57 videos
23 files
3K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Ресурс включён в перечень Роскомнадзора
Download Telegram
На канале в разное время было много упоминаний про консольную утилиту для бэкапа 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:

# 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