Эта утилита предназначена для пользователей серверов, которым необходимо регулярно создавать бэкапы баз данных ( PostgreSQL, MongoDB и MySQL) и директорий. ReBack поддерживает сохранение бэкапов как локально, так и в S3-совместимых хранилищах, организуя их в удобной структуре и автоматически отслеживая срок хранения.
Также, ReBack поддерживает восстановление бэкапов из S3 хранилища в указанные в конфигурации элементы.
- Поддержка бэкапа PostgreSQL, MongoDB и MySQL как установленных локально, так и в Docker-контейнерах.
- Бэкап локальных директорий.
- Сохранение бэкапов локально и в S3-совместимых хранилищах.
- Организация бэкапов в подкаталогах по именам элементов, указанным в конфигурации.
- Генерация имён файлов бэкапов на основе имени элемента и времени создания.
- Логирование всех шагов процесса в файл с ротацией при достижении 10МБ.
- Конфигурирование через JSON-файл
settings.json
. - Восстановление бэкапов из S3-хранилища
- Установленный Docker (для сохранения/восстановления из контейнеров).
- S3-совместимое хранилище (для удалённого сохранения/восстановления бэкапов).
-
Скачать последнюю версию с страницы релизов или использовать
wget/curl
:# Linux wget /~https://github.com/proDreams/reback/releases/download/v0.3.1/reback_linux -O reback # macOS Intel wget /~https://github.com/proDreams/reback/releases/download/v0.3.1/reback_macos_intel -O reback # macOS ARM wget /~https://github.com/proDreams/reback/releases/download/v0.3.1/reback_macos_aarch -O reback # Windows curl -L -o reback.exe /~https://github.com/proDreams/reback/releases/download/v0.3.1/reback.exe
-
Для Linux и macOS: Сделайте файл исполнимым, выполнив команду:
chmod +x reback
-
Создать и настроить
settings.json
. Подробнее в Конфигурация
Если вы хотите собрать приложение самостоятельно, выполните следующие шаги:
Требования:
- Установленный Rust (рекомендуемая версия:
rustc 1.83.0
). - Менеджер инструментов Rust:
rustup 1.27.1
или выше.
-
Клонируйте репозиторий:
git clone /~https://github.com/proDreams/reback.git cd reback
-
Соберите приложение в режиме релиза:
cargo build --release
-
Для Linux и macOS. Сделайте файл исполняемым:
chmod +x target/release/reback
-
Исполняемый файл находится в директории
target/release/reback
-
Создать и настроить
settings.json
. Подробнее в Конфигурация
Приложение конфигурируется через файл settings.json
.
Внимание! Файл settings.json
должен находиться в той же директории, что и исполняемый файл!
-
Скачайте файл с шаблоном конфигурации:
# Linux и macOS wget https://raw.githubusercontent.com/proDreams/reback/main/settings.json.example -O settings.json # Windows curl -L -o settings.json https://raw.githubusercontent.com/proDreams/reback/main/settings.json.example
-
Откройте файл для редактирования:
# Linux и macOS nano settings.json # Windows notepad settings.json
-
Настройте конфигурацию под своё окружение и сохраните файл.
{
"s3_endpoint": "https://s3.example.com",
"s3_region": "us-east-1",
"s3_bucket": "my-bucket",
"s3_access": "access-key",
"s3_secret": "secret-key",
"s3_path_style": "path",
"backup_dir": "/tmp/backups",
"elements": []
}
- s3_endpoint: URL вашего S3-совместимого хранилища.
- s3_region: Регион вашего S3-хранилища.
- s3_bucket: Имя S3-бакета, куда будут сохраняться бэкапы.
- s3_access: Ключ доступа для подключения к S3.
- s3_secret: Секретный ключ для подключения к S3.
- s3_path_style: Указывает стиль пути для S3 (например, "path" или "virtual-host").
- backup_dir: Абсолютный путь до директории, где будут храниться локальные бэкапы. Если директория не существует, она будет создана автоматически.
- elements: Массив объектов, каждый из которых описывает элемент для бэкапа (например, базу данных или директорию).
Настраиваемый список элементов для бэкапа/восстановления.
Пример элемента:
{
"element_title": "my_pg_db",
"s3_folder": "postgres_backups",
"backup_retention_days": 30,
"s3_backup_retention_days": 90,
"params": {
"type": "postgresql",
"db_host": "localhost",
"db_port": 5432,
"db_name": "my_database",
"db_user": "user",
"db_password": "password"
}
}
postgresql
— Бэкап базы данных PostgreSQL.postgresql_docker
— Бэкап базы данных PostgreSQL из Docker-контейнера.mongodb
— Бэкап базы данных MongoDB.mongodb_docker
— Бэкап базы данных MongoDB из Docker-контейнера.mysql
— Бэкап базы данных MySQL.mysql_docker
— Бэкап базы данных MySQL из Docker-контейнера.folder
— Бэкап локальной директории.
Тип элемента | Параметр | Описание | Обязательность |
---|---|---|---|
postgresql | db_host |
Хост базы данных. По умолчанию: localhost . |
Необязательный |
db_port |
Порт для подключения. | Обязательный | |
db_name |
Имя базы данных. | Обязательный | |
db_user |
Пользователь базы данных. | Обязательный | |
db_password |
Пароль пользователя. | Обязательный | |
postgresql_docker | docker_container |
Имя контейнера Docker с PostgreSQL. | Обязательный |
db_name |
Имя базы данных. | Обязательный | |
db_user |
Пользователь базы данных. | Обязательный | |
db_password |
Пароль пользователя. | Обязательный | |
mongodb | db_host |
Хост базы данных. По умолчанию: localhost . |
Необязательный |
db_port |
Порт для подключения. | Обязательный | |
db_user |
Пользователь базы данных. | Необязательный | |
db_password |
Пароль пользователя. | Необязательный | |
mongodb_docker | docker_container |
Имя контейнера Docker с MongoDB. | Обязательный |
db_user |
Пользователь базы данных. | Необязательный | |
db_password |
Пароль пользователя. | Необязательный | |
mysql | db_host |
Хост базы данных. По умолчанию: localhost . |
Необязательный |
db_port |
Порт для подключения. | Обязательный | |
db_name |
Имя базы данных. | Обязательный | |
db_user |
Пользователь базы данных. | Обязательный | |
db_password |
Пароль пользователя. | Обязательный | |
mysql_docker | docker_container |
Имя контейнера Docker с MySQL. | Обязательный |
db_name |
Имя базы данных. | Обязательный | |
db_user |
Пользователь базы данных. | Обязательный | |
db_password |
Пароль пользователя. | Обязательный | |
folder | target_path |
Путь до директории, которую нужно забэкапить. | Обязательный |
Параметр | Описание |
---|---|
element_title | Название элемента (для использования в имени директории и файла). |
s3_folder | Папка в S3 для хранения бэкапов. |
backup_retention_days | Количество дней хранения локальных бэкапов. |
s3_backup_retention_days | Количество дней хранения бэкапов в S3. |
Для запуска процесса бэкапа выполните следующую команду:
./reback backup
Важно: Аргумент backup
обязателен для запуска процесса бэкапа. Без него программа не будет выполняться, и вы
получите ошибку.
Вы можете автоматизировать процесс бэкапа, создав задачу Cron. Например, чтобы запускать бэкап каждый день в 2:00, добавьте следующую строку в ваш файл crontab:
0 2 * * * /path/to/reback backup
Эта задача Cron будет:
- Выполнять команду
./reback backup
каждый день в 2:00.
Для редактирования crontab используйте команду:
crontab -e
Затем добавьте строку задачи Cron. Убедитесь, что путь к бинарнику reback
.
Есть два варианта восстановления бэкапов:
- Убедитесь, что у вас есть настроенный
settings.json
с описанием всех необходимых элементов. - Выполните команду для запуска восстановления:
./reback restore
- Убедитесь, что у вас есть настроенный
settings.json
с описанием всех необходимых элементов. - Выполните команду для запуска восстановления:
# Шаблон ./reback restore <element_title1> <element_title2> # Пример ./reback restore my_pg_bd image_folder mongo_site
Автор программы: Иван Ашихмин
Telegram для связи: https://t.me/proDreams
Программа выполнена в рамках проекта "Код на салфетке".
- Сайт: https://pressanybutton.ru/
- Telegram-канал: https://t.me/press_any_button
Если вам нравится этот проект и вы хотите поддержать его дальнейшее развитие, рассмотрите возможность доната:
- Донат через TON:
UQBU8rJEfUcBvJUbz6NbXiWxaOO_NoXHK_pXOWv7qsOBWbFp
- Поддержка на Boosty
- В нашем Telegram-боте за Telegram Stars
Ваша поддержка помогает проекту развиваться и улучшать будущие функции!
Этот проект распространяется под лицензией MIT. Подробности можно найти в файле LICENSE.