https://github.com/iwizard7/rabbitmq_backup_script
This Bash script is designed to back up RabbitMQ configuration and data.
https://github.com/iwizard7/rabbitmq_backup_script
backup bash-script rabbitmq
Last synced: 2 months ago
JSON representation
This Bash script is designed to back up RabbitMQ configuration and data.
- Host: GitHub
- URL: https://github.com/iwizard7/rabbitmq_backup_script
- Owner: iwizard7
- Created: 2023-11-02T07:06:37.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-11T09:25:36.000Z (almost 2 years ago)
- Last Synced: 2025-09-03T14:49:34.753Z (10 months ago)
- Topics: backup, bash-script, rabbitmq
- Language: Shell
- Homepage:
- Size: 20.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Скрипт резервного копирования для RabbitMQ ⚙️

Этот скрипт Bash предназначен для создания резервных копий данных RabbitMQ и сохранения их в Git-репозиторий. Вот как он работает:
## Параметры
В начале скрипта определены несколько параметров, которые можно настроить в соответствии с вашими потребностями:
- `GIT_REPO_PATH`: Путь к локальному Git-репозиторию, где будут храниться резервные копии.
- `GIT_REPO_FULL_PATH`: Полный путь к папке в Git-репозитории, где будут сохраняться резервные копии для конкретного кластера RabbitMQ.
- `RABBITMQ_CFG_PATH`: Путь к конфигурационному файлу `rabbitmq.config` на вашей системе.
- `TMP_PATH`: Временная папка, где будут создаваться временные файлы и архивы.
- `MNESIA_COPY`: Флаг, указывающий, нужно ли копировать папку `mnesia`. Если установлено значение `true`, скрипт остановит сервис RabbitMQ, создаст архив `mnesia` и затем снова запустит сервис.
- `MNESIA_DIR`: Путь к папке `mnesia` в RabbitMQ.
## Копирование папки `mnesia`
Если переменная `MNESIA_COPY` установлена в значение `true`, скрипт выполнит следующие действия:
1. Остановит сервис RabbitMQ с помощью команды `rabbitmqctl stop_app`.
2. Создаст архив `zip` из папки `mnesia` с использованием команды `zip`.
3. Запустит сервис RabbitMQ снова с помощью команды `rabbitmqctl start_app`.
Если переменная `MNESIA_COPY` установлена в значение `false`, этот шаг будет пропущен.
## Проверка наличия папок
Следующий блок кода проверяет наличие папок `/opt/git` и `/opt/tmp` и создает их, если они отсутствуют.
## Выгрузка бэкапа с помощью `rabbitmqadmin`
Скрипт использует утилиту `rabbitmqadmin` для выгрузки схемы данных RabbitMQ в формате JSON. Выгрузка происходит с использованием команды `rabbitmqadmin export`, и результат сохраняется в файл `schema_$(hostname -s).json` во временной папке.
## Копирование конфигурационного файла
Скрипт копирует файл `rabbitmq.config` из указанного пути `RABBITMQ_CFG_PATH` во временную папку. Имя файла будет иметь формат `rabbitmq_$(hostname -s).config`, где `$(hostname -s)` - это имя текущей ноды.
## Создание архива
Скрипт создает архив `zip` с помощью команды `zip -r -P ****** $(hostname -s).zip *` во временной папке. Архив будет защищен паролем `******`, и его имя будет иметь формат `$(hostname -s).zip`, где `$(hostname -s)` - это имя текущей ноды.
## Перемещение архива в Git-репозиторий
Скрипт перемещает созданный архив в папку `GIT_REPO_FULL_PATH` в локальном Git-репозитории.
## Удаление временных файлов
Скрипт удаляет временные файлы `rabbitmq_$(hostname -s).config` и `schema_$(hostname -s).json` из временной папки.
## Добавление и коммит в Git
Скрипт выполняет команды `git add --all` и `git commit -m "Добавлен бэкап cluster_name нода nodename"` для добавления и коммита изменений в Git-репозиторий.
## Отправка в удаленный Git-репозиторий
Скрипт отправляет изменения в удаленный Git-репозиторий с помощью команды `git push origin master`.
---