Добавить в корзинуПозвонить
Найти в Дзене
Записки джировика

Восстановление Docker-версии Jira из бэкапа

Создадим файл restore_jira.sh и добавим в него код: #!/bin/bash
# === Настройки ===
JIRA_CONTAINER="jira"
DB_CONTAINER="jira-postgres"
DB_USER="jirauser"
DB_NAME="jiradb2"
BACKUP_DIR="/var/backups/jira"
LATEST_DB_BACKUP=$(ls -t $BACKUP_DIR/jira_db_backup_*.sql | head -n 1)
LATEST_DATA_BACKUP=$(ls -t $BACKUP_DIR/jira_data_*.tar.gz | head -n 1)
# Проверяем наличие бэкапов
if [[ -z "$LATEST_DB_BACKUP" || -z "$LATEST_DATA_BACKUP" ]]; then
echo "Ошибка: Не найдено файлов бэкапа!" >&2
exit 1
fi
echo "[$(date)] Начинаем восстановление Jira..." >> /tmp/restore.log
#1️⃣ Остановка контейнера Jira
echo "Остановка Jira..."
sudo docker stop $JIRA_CONTAINER
# 2️⃣ Восстановление данных Jira
echo "Восстановление файлов Jira..."
sudo docker run --rm -v jira_data:/data -v $BACKUP_DIR:/backup alpine tar xzvf /backup/$(basename $LATEST_DATA_BACKUP) -C /data
# 3️⃣ Восстановление базы данных
echo "Сброс БД..."
sudo docker exec -i $DB_CONTAINER psql -U $DB_USER -d postgres -c "DROP DATABASE $DB
Оглавление

1. Создание скрипта восстановления

Создадим файл restore_jira.sh и добавим в него код:

#!/bin/bash

# === Настройки ===
JIRA_CONTAINER="jira"
DB_CONTAINER="jira-postgres"
DB_USER="jirauser"
DB_NAME="jiradb2"
BACKUP_DIR="/var/backups/jira"
LATEST_DB_BACKUP=$(ls -t $BACKUP_DIR/jira_db_backup_*.sql | head -n 1)
LATEST_DATA_BACKUP=$(ls -t $BACKUP_DIR/jira_data_*.tar.gz | head -n 1)

# Проверяем наличие бэкапов
if [[ -z "$LATEST_DB_BACKUP" || -z "$LATEST_DATA_BACKUP" ]]; then
echo "Ошибка: Не найдено файлов бэкапа!" >&2
exit 1
fi

echo "[$(date)] Начинаем восстановление Jira..." >> /tmp/restore.log

#1️⃣ Остановка контейнера Jira
echo "Остановка Jira..."
sudo docker stop $JIRA_CONTAINER

# 2️⃣ Восстановление данных Jira
echo "Восстановление файлов Jira..."
sudo docker run --rm -v jira_data:/data -v $BACKUP_DIR:/backup alpine tar xzvf /backup/$(basename $LATEST_DATA_BACKUP) -C /data

# 3️⃣ Восстановление базы данных
echo "Сброс БД..."
sudo docker exec -i $DB_CONTAINER psql -U $DB_USER -d postgres -c "DROP DATABASE $DB_NAME;"
sudo docker exec -i $DB_CONTAINER psql -U $DB_USER -d postgres -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;"

echo "Загрузка бэкапа БД..."
sudo docker exec -i $DB_CONTAINER psql -U $DB_USER -d $DB_NAME < $LATEST_DB_BACKUP

# 4️⃣ Запуск контейнера Jira
echo "Запуск Jira..."
sudo docker start $JIRA_CONTAINER

echo "[$(date)] Восстановление завершено!" >> /tmp/restore.log

2. Выдача прав и запуск

Сделаем скрипт исполняемым:

chmod +x restore_jira.sh

Теперь запустить можно так:

sudo ./restore_jira.sh

3. Что делает этот скрипт?

  • Останавливает Jira.
  • Находит последний бэкап БД и данных Jira.
  • Восстанавливает файлы Jira из .tar.gz.
  • Пересоздаёт базу данных и загружает в неё дамп.
  • Запускает Jira.

4. Дополнительные опции

  • Восстановление конкретного бэкапа (указать вручную):

LATEST_DB_BACKUP="/var/backups/jira/jira_db_backup_2025-02-23_03-00-00.sql" LATEST_DATA_BACKUP="/var/backups/jira/jira_data_2025-02-23_03-00-00.tar.gz"

  • Отладка (детальный лог):bash -x /var/backups/jira/restore_jira.sh

Итог

Теперь можно восстановить Jira в любой момент одной командой. Если что-то не работает, проверьте restore.log:

cat /tmp/restore.log

Готово! 🚀