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

Бэкапирование Docker-версии Jira

Автоматизировать создание бэкапов Docker-версии Jira можно с помощью cron, скрипта на Bash и хранилища (например, локального, удаленного сервера или облака). Перед созданием бэкапа убедитесь что создан снапшот индекса, без него восстановление вложений невозможно. Проверить наличие снапшота можно в окне реиндекса и там же можно создать его вручную. Создадим скрипт backup_jira.sh, который: В скрипте замените названия контейнеров, БД, пользователя, если они у вас отличаются #!/bin/bash
# Настройки
JIRA_CONTAINER="jira"
DB_CONTAINER="jira-postgres"
DB_USER="jirauser"
DB_NAME="jiradb2"
BACKUP_DIR="/var/backups/jira"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
# Создаем папку для бэкапов, если её нет
mkdir -p $BACKUP_DIR
echo "[$(date)] Начинаем бэкап Jira..." >> /tmp/backup.log
# Бэкап базы данных
sudo docker exec $DB_CONTAINER pg_dump -U $DB_USER -d $DB_NAME -f /tmp/jira_db_backup.sql
sudo docker cp $DB_CONTAINER:/tmp/jira_db_backup.sql $BACKUP_DIR/jira_db_backup_$DATE.sql
sudo docker exec $DB_C
Оглавление

Автоматизировать создание бэкапов Docker-версии Jira можно с помощью cron, скрипта на Bash и хранилища (например, локального, удаленного сервера или облака).

Перед созданием бэкапа убедитесь что создан снапшот индекса, без него восстановление вложений невозможно. Проверить наличие снапшота можно в окне реиндекса и там же можно создать его вручную.

🔹 1. Создание Bash-скрипта для бэкапа

Создадим скрипт backup_jira.sh, который:

  • Создает бэкап базы данных.
  • Создает архив данных Jira.
  • Чистит старые бэкапы (например, старше 7 дней).
  • Записывает логи.

В скрипте замените названия контейнеров, БД, пользователя, если они у вас отличаются

#!/bin/bash

# Настройки
JIRA_CONTAINER="jira"
DB_CONTAINER="jira-postgres"
DB_USER="jirauser"
DB_NAME="jiradb2"
BACKUP_DIR="/var/backups/jira"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")

# Создаем папку для бэкапов, если её нет
mkdir -p $BACKUP_DIR

echo "[$(date)] Начинаем бэкап Jira..." >> /tmp/backup.log

# Бэкап базы данных
sudo docker exec $DB_CONTAINER pg_dump -U $DB_USER -d $DB_NAME -f /tmp/jira_db_backup.sql
sudo docker cp $DB_CONTAINER:/tmp/jira_db_backup.sql $BACKUP_DIR/jira_db_backup_$DATE.sql
sudo docker exec $DB_CONTAINER rm /tmp/jira_db_backup.sql

# Бэкап данных Jira
sudo docker run --rm --volumes-from $JIRA_CONTAINER -v $BACKUP_DIR:/backup alpine tar czvf /backup/jira_data_$DATE.tar.gz /var/atlassian/application-data/jira

# Удаление старых бэкапов (старше 7 дней)
sudo find $BACKUP_DIR -type f -mtime +7 -delete

echo "[$(date)] Бэкап завершен!" >> /tmp/backup.log

📌 Объяснение кода:

  • Создается каталог /var/backups/jira.
  • Дамп базы данных копируется в этот каталог.
  • Данные Jira архивируются.
  • Старые бэкапы (старше 7 дней) удаляются.
  • В лог (backup.log) записываются действия.

🔹 2. Настройка cron для автоматизации

Открываем редактор cron:

crontab -e
Добавляем строку для ежедневного бэкапа в 3 часа ночи:
0 3 * * * /bin/bash /var/backups/jira/backup_jira.sh

Можно проверить выполнение:
cat /tmp/backup.log

🔹 3. Запуск скрипта вручную

Если нужно запустить скрипт принудительно, есть несколько вариантов ручного запуска скрипта

📌 1. Запуск через bash или sh

bash backup_jira.sh

или

sh backup_jira.sh

📌 2. Запуск напрямую, если есть права на выполнение

Сначала проверяем права:

ls -l backup_jira.sh

Если в начале строки нет x (исполняемых прав), добавляем их:

chmod +x backup_jira.sh

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

./backup_jira.sh

📌 3. Запуск с sudo, если нужны root-права

Если скрипт требует суперпользовательских привилегий:

sudo ./backup_jira.sh

📌 4. Запуск в другом интерпретаторе (если используется #!/bin/bash)

Если внутри скрипта указано #!/bin/bash, но система использует другой интерпретатор, запустите так:

/bin/bash backup_jira.sh

🔹 Если скрипт не запускается:

  • Проверьте ошибки с помощью bash -x backup_jira.sh (отладочный режим).
  • Убедитесь, что скрипт выполняется в правильной директории (cd /path/to/script).
  • Проверьте зависимости (docker, pg_dump, tar должны быть установлены).

🔹 3. (Опционально) Загрузка в облако или удаленный сервер

📌 Если нужно отправлять бэкапы на другой сервер по scp:

scp $BACKUP_DIR/jira_db_backup_$DATE.sql user@remote-server:/remote/backup/path/

scp $BACKUP_DIR/jira_data_$DATE.tar.gz user@remote-server:/remote/backup/path/

📌 Если использовать S3-хранилище AWS:
aws s3 cp $BACKUP_DIR s3://your-bucket-name/ --recursive

🔹 Итог

✅ Бэкап автоматизируется через cron.
✅ Скрипт чистит старые бэкапы.
✅ Можно расширить его для загрузки в облако.

Готово! 🚀