#!/bin/bash
usage() {
cat <<EOF
Usage: redmine_bak [ -r | -h ]

-r --restore
This command will restore that version into Redmine.

-h --help
Print this help text.
EOF
exit $1
}

# today
export Today="`date '+%Y-%m-%d'`"

# backup working directory
work_dir="/root/redmine"

#backup data directory
backup_dir="/root/redmine/backup"

# duration to backup
backup_count=7

#설정파일에서 DB 정보읽어오기
DATABASE=`cat /opt/webRoot/redmine/config/database.yml | sed -rn 's/ *database: (.+)/\1/p' | head -1`
USERNAME=`cat /opt/webRoot/redmine/config/database.yml | sed -rn 's/ *username: (.+)/\1/p' | head -1`
PASSWORD=`cat /opt/webRoot/redmine/config/database.yml | sed -rn 's/ *password: (.+)/\1/p' | head -1`

# redmine 설치된곳의 첨부파일 디렉토리
FILES=/opt/webRoot/redmine/files
cd $work_dir


# Help
if [ "$1" = "-h" -o "$1" = "--help" ]; then
  usage 0

# Restore
# 오늘날짜의 백업된 내용을 복구하는 방식
# To-do 날짜를 지정해서 입력하면 더 좋음
elif [ "$1" = "-r" -o "$1" = "--restore" ]; then
  cd ${backup_dir}/$Today
  /usr/bin/mysql --user=${USERNAME} --password=${PASSWORD} $DATABASE < redmine.sql
  cp -f [!r][!e][!d][!m][!i][!n][!e]* $FILES

# Backup
else
  # 보관일 이전의 데이터 삭제
  dirlists=`/bin/ls -t $backup_dir 2>/dev/null`
  i=1
  for dir in $dirlists ; do
	if [ "$i" -ge $backup_count ] ; then
	/bin/rm -rf $backup_dir/$dir
	fi
  i=$(($i+1))
  done
  # 백업수행
  /bin/mkdir -p ${backup_dir}/$Today
  cd ${backup_dir}/$Today

  if [ "$1" ]; then MSG="$@"; else MSG="`date`"; fi
  #password 에러가 나는 경우 database.yml 파일에서 따옴표(")를 제거하면 정상작동
  /usr/bin/mysqldump --user=${USERNAME} --password=${PASSWORD} --skip-extended-insert $DATABASE > redmine.sql
  cp -f ${FILES}/* .
  cd $work_dir

fi
