|
#!/bin/bash
|
|
#
|
|
# backup_redmine.sh
|
|
# Backup of a Redmine setup
|
|
# Last Changes: 2013-02-23
|
|
# Maintainer: Patrice Nadeau <patricen@telwarwick.net>
|
|
|
|
# TODO Verify the results (folder exist, enough disk pace , etc..)
|
|
|
|
## The only variable needed to be changed
|
|
# Directory of the Redmine install
|
|
declare -r RAIL_ROOT='/srv/redmine'
|
|
# MySQL database
|
|
declare -r MYSQL_DB=''
|
|
# MySQL username for the Redemine db
|
|
declare -r MYSQL_USER=''
|
|
# MySQL password for the Redemine db
|
|
declare -r MYSQL_PASSWORD=''
|
|
# Directory for the backup (must exist and with no space in the name)
|
|
declare -r DIR='/root'
|
|
## end
|
|
|
|
# Exit level
|
|
declare -ir EXIT_OK=0
|
|
declare -ir EXIT_WARNING=1
|
|
declare -ir EXIT_ERROR=2
|
|
|
|
declare -i STATUS=$EXIT_OK
|
|
|
|
# The directory inside the archive
|
|
declare -r REDMINE='redmine'
|
|
TMP_DIR=$DIR/$REDMINE
|
|
|
|
# This will be used for the archive file
|
|
declare -r DST=$DIR/redmine_$(date +%Y%m%d_%H%M%S).tar.gz
|
|
|
|
# The temporary sql file
|
|
declare -r TMP_MYSQL=$TMP_DIR/$MYSQL_DB.mysql
|
|
|
|
echo "Backup in progress in $DST"
|
|
|
|
#### Create the temp directory ####
|
|
mkdir $TMP_DIR
|
|
|
|
#### backup MySQL ####
|
|
if [ $STATUS -eq $EXIT_OK ]
|
|
then
|
|
STEP='Creating MySQL backup'
|
|
mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD $MYSQL_DB \
|
|
> $TMP_MYSQL
|
|
STATUS=$?
|
|
fi
|
|
|
|
#### backup the Redmine folder ####
|
|
if [ $STATUS -eq $EXIT_OK ]
|
|
then
|
|
STEP='Creating Redmine'"'"' files backup'
|
|
cp --recursive $RAIL_ROOT $TMP_DIR
|
|
STATUS=$?
|
|
fi
|
|
|
|
#### create the archive file ####
|
|
if [ $STATUS -eq $EXIT_OK ]
|
|
then
|
|
STEP="Creating archive"
|
|
tar --create --gzip --file $DST --directory=$DIR $REDMINE
|
|
STATUS=$?
|
|
fi
|
|
|
|
#### cleanup ####
|
|
if [ $STATUS -eq $EXIT_OK ]
|
|
then
|
|
STEP='Cleaning up'
|
|
rm --recursive --force $TMP_DIR
|
|
STATUS=$?
|
|
fi
|
|
|
|
#### exit ####
|
|
if [ $STATUS -eq $EXIT_OK ]
|
|
then
|
|
echo "Backup done"
|
|
else
|
|
echo "Bakup failed with error code $STATUS in step $STEP"
|
|
fi
|
|
|
|
|
|
exit $STATUS
|
|
|