Ежедневный backup Atlassian JIRA и Confluence для Windows



    Задача:
    • Ежедневный backup mysql базы данных для JIRA и Confluence;
    • Ежедневный backup директорий с attachments;
    • Архивирование всех сделанных backup'ов;
    • Удаление старых backup'ов.


    Оговорюсь, что мне это нужно было сделать для Windows и я понимаю, что для Linux все делается проще и быстрее. Также если вы являетесь администратором, то данный топик вряд ли будет вам интересен и ничего нового вы не узнаете. Но можете использовать написанное, как готовое и проверенное решение.


    Для начала определимся с переменными:
    ::Директория с вашими Attachments для JIRA или Confluence
    set attachments="C:\Program Files\Atlassian\Application Data\JIRA\data"
    
    ::Директория, куда будут сохраняться ежедневные backups
    set backup_folder=D:\Backups\Atlassian\JIRA\daily_backups
    
    ::Путь к файлу mysqldump.exe
    set mysqldump_path="C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe"
    
    :: Пользователь MySQL 
    set dbuser=root
    
    :: Пароль пользователя MySQL
    set dbpass=<change password>
    
    :: База данных, которую мы хотим бэкапить (JIRA или Confluence)
    set dbname=jiradb
    


    Каждый бэкап должен иметь уникальное имя, для его генерации можно использовать год, месяц, день и временной интервал.
    For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set dt=%%c-%%a-%%b)
    For /f "tokens=1-4 delims=:." %%a in ('echo %time%') do (set tm=%%a%%b%%c%%d)
    set backupdate=%1%dt%_%tm%
    set date_folder=%1%dt%
    


    Вы можете корректировать ваше имя как вам удобно, в моем случае формат такой: [db name].YYYY-MM-DD_tt

    Переменную date_folder я завел для того, чтобы каждый день создавалась папка YYYY-MM-DD и в нее складывались backups.

    Соответственно если директории нету, то создаем ее:
    if exist %backup_folder%\%date_folder% GOTO NODIR
       mkdir %backup_folder%\%date_folder%
    :NODIR
    


    Далее, выполняем обычный backup базы данных при помощи mysqldump, архивируем при помощи 7zip и удаляем заархивированный файл.
    %mysqldump_path% --user=%dbuser% --password=%dbpass% --databases %dbname% > "%backup_folder%\%date_folder%\%dbname%.%backupdate%.sql"
    "zip\7za.exe" a -tzip "%backup_folder%\%date_folder%\%dbname%.%backupdate%.zip" "%backup_folder%\%date_folder%\*.sql"
    del "%backup_folder%\%date_folder%\*.sql"
    


    Не забываем заархивировать папку с attachments:
    "zip\7za.exe" a -tzip %backup_folder%\%date_folder%\attachments.%backupdate%.zip %attachments%
    


    И все что нам остается это удалить старые директории (старше 14 дней).
    forfiles -p %backup_folder% -s -d -14 -c "cmd /c if @isdir == TRUE rd /s /q @path"
    


    Все что нам остается это скормить этот bat файл Windows Task Sheduler и указать, чтобы таск срабатывал каждый день.

    P.S. Если таск не срабатывает, проверьте, чтобы стояла галочка, что таск должен выполняться даже тогда, когда пользователь, от чьего имени запускается таск, не залогинен, и что у этого пользователя есть права на запись. Также, не забудьте указать, чтобы таск выполнялся в директории, в которой лежит скрипт. (Для тасков это необязательный параметр, но без этого таск отрабатывал, но скрипт не запускал.)

    P.P.S. Если кому скрипт оказался полезным, то его можно скачать здесь: download
    Поделиться публикацией

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 3

      +3
      Неплохо было бы заменить "C:\Program Files" на "%ProgramFiles%"
        –2
        Это по сути своей пользовательские настройки и пользователь вправе сам решать, как ему удобней будет прописывать путь, например у меня Confluence инсталлирован в C:/Program Files или %ProgramFiles%, а JIRA в C:/Program Files (x86)
          +3
          Я против хардкода, есть переменные окружения.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое