Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
02:24, 11 июля 2016

Резервное копирование Jira

Blog post image

Нашел удобный скрипт в Интернете для резервного копирования Jira. Жалко забыл скопировать ссылку на источник...

Что такое Jira — это коммерческая система отслеживания ошибок, предназначена для организации взаимодействия с пользователями, хотя в некоторых случаях используется и для управления проектами. Разработана компанией Atlassian, является одним из двух её основных продуктов (наряду с вики-системой Confluence). Имеет веб-интерфейс.

Создаем файл например /opt/backup_jira.sh со следующим содержимым:

 
#!/bin/bash
mount -t cifs //192.168.10.100/Public /mnt/storage -o user=Bckuser,password=password
jira_home="/var/atlassian/"
#jira_home="/opt/atlassian/jira"
bklog="/var/log/jira_backup.log"
dbkdir="/mnt/storage/jira/backup/files/daily"
wbkdir="/mnt/storage/jira/backup/files/weekly"
manbkdir="/mnt/storage/jira/backup/files/manual"

mdbkdir="/mnt/storage/jira/backup/mysql/daily"
mwbkdir="/mnt/storage/jira/backup/mysql/weekly"
manmbkdir="/mnt/storage/jira/backup/mysql/manual"

curdate=`date +%Y-%M-%d-%H:%M:%S`
ardate=`echo $curdate  | sed -e 's/:/_/g' -e 's/-/_/g'`
wday=`date +%a`

usage () {
cat << EOF

Usage: $0 [ options ]

This script can create full or incremental backup of JIRA and it's database.

Available options are:

 -h | help - show this help and exit;
 -m | manual - run full backup in to directory "Files manual" and "MySQL manual" directories;
 -a | auto - if started at Sunday will run full backup in to "Files weekly" and "MySQL weekly" directories, otherwise - will copy only files modified last 24 hour in to "Files daily" and "MySQL daily".

Directories list:

Files daily: $dbkdir
Files weekly: $wbkdir
Files manual: $manbkdir

MySQL daily: $mdbkdir
MySQL weekly: $mwbkdir
MySQL manual: $manmbkdir

Daily backups stored 7 days. Weekly - 4 copies (i.e. - one month).

EOF
}

clean_daily () {
while [[ ! -z $@ ]]
do
  echo -e "Cleaning directory $1 - deleting archives older than 7 days...n"
  # в переданных аргументами директориях находим и удаляем архивы старше 7-ми дней
  find $1 -mtime +7 -exec rm -f {} \;
  shift
done
}

clean_weekly () {
while [[ ! -z $@ ]]
do
  echo -e "Cleaning directory $1 - deleting old archives...n"
  # в переданных аргументами директориях находим и удаляем все архивы, кроме последних 4-х
  cd $1
  [[ `pwd` == $1 ]] && rm -f `ls -1 | tail -n +5` || { echo "Wrong dir $1! Exit."; exit 1; }
  shift
done
}

files_full_backup () {
  echo -e "Archiving files...n"
  tar cjpf "$1/full_files_$ardate.tar.bz2" "$jira_home"
}

files_inc_backup () {
  echo -e "Archiving files...n"
  find $jira_home -mtime -1 -exec tar cvjpf "$1/inc_files_$ardate.tar.bz2" {} \;
}

mysql_backup () {
  echo -e "Dumping database...n"
  mysqldump -uroot -pPassword jiradb > $1/dbname_$ardate.sql
}

{
[[ -z $1 ]] && usage

auto=0
manual=0

while getopts "ham" opt; do
  case $opt in
        h)
          usage && exit 1
          ;;
        a)
          auto=1
          ;;
        m)
          manual=1
          ;;
        ?)
          usage && exit 1
          ;;
  esac
done

if [ $auto == 1 ]; then

  echo -e "Started automated backup process at $curdate.n"
  if [ $wday != Sun ]
  then
    echo -e "As today is not Sunday - I'll start incremental backup.n"
    files_inc_backup $dbkdir
    mysql_backup $mdbkdir
    clean_daily $dbkdir $mdbkdir
  else
    echo -e "As today is Sunday - I'll start full backup.n"
    files_full_backup $wbkdir
    mysql_backup $mwbkdir
    clean_weekly $wbkdir $mwbkdir
  fi
fi

if [ $manual == 1 ]; then
  files_full_backup $manbkdir
  mysql_backup $manmbkdir
fi

echo -e "Backup finished at $curdate.n"
} 2>&1 | tee -a "$bklog"

 

Здесь создается подключение к удаленному серверу 192.168.1.100, туда складывается копия каталога Jira.

Через mysqldump сохраняется база MySQL. Важно создать каталоги куда должны падать бекапы

Даем права на запуск:

# chmod +x /opt/jira_backup.sh

Создаем каталоги для хранения бекапов:

# mkdir -p /mnt/storage/jira/backup/files/{daily,weekly,manual}

# mkdir -p /mnt/storage/jira/backup/mysql/{daily,weekly,manual}

И запускаем тестовый backup:

# cd /opt

# ./opt/jira_backup.sh -m

 

В crontab добавляем запись:

00 23 7 * * /opt/jira_backup.sh -a

Это поможет делать бекап каждое воскресенье в 23:00

0
1110
0