some enhancements to backup & restore
This commit is contained in:
parent
4b670b0786
commit
acdbd4b83a
5 changed files with 67 additions and 26 deletions
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# zammad backup script config
|
|
||||||
#
|
|
||||||
|
|
||||||
ZAMMAD_DIR="/opt/zammad"
|
|
||||||
DATABASE_CONFIG="config/database.yml"
|
|
||||||
BACKUP_DIR="/var/tmp/zammad_backup"
|
|
||||||
HOLD_DAYS="10"
|
|
||||||
DEBUG="no"
|
|
8
contrib/backup/config.dist
Normal file
8
contrib/backup/config.dist
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# zammad backup script config
|
||||||
|
#
|
||||||
|
|
||||||
|
BACKUP_DIR='/var/tmp/zammad_backup'
|
||||||
|
HOLD_DAYS='10'
|
||||||
|
DEBUG='no'
|
|
@ -3,6 +3,10 @@
|
||||||
# zammad backup script functions
|
# zammad backup script functions
|
||||||
#
|
#
|
||||||
|
|
||||||
|
function get_zammad_dir () {
|
||||||
|
ZAMMAD_DIR="$(echo ${BACKUP_SCRIPT_PATH} | sed -e 's#/contrib/backup.*##g')"
|
||||||
|
}
|
||||||
|
|
||||||
function get_backup_date () {
|
function get_backup_date () {
|
||||||
TIMESTAMP="$(date +'%Y%m%d%H%M%S')"
|
TIMESTAMP="$(date +'%Y%m%d%H%M%S')"
|
||||||
|
|
||||||
|
@ -16,10 +20,10 @@ function delete_old_backups () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_db_credentials () {
|
function get_db_credentials () {
|
||||||
DB_ADAPTER="$(grep 'adapter:' < ${ZAMMAD_DIR}/${DATABASE_CONFIG} | sed -e 's/.*adapter:\(\| \)//g')"
|
DB_ADAPTER="$(grep 'adapter:' < ${ZAMMAD_DIR}/config/database.yml | sed -e 's/.*adapter:\(\| \)//g')"
|
||||||
DB_NAME="$(grep 'database:' < ${ZAMMAD_DIR}/${DATABASE_CONFIG} | sed -e 's/.*database:\(\| \) //g')"
|
DB_NAME="$(grep 'database:' < ${ZAMMAD_DIR}/config/database.yml | sed -e 's/.*database:\(\| \) //g')"
|
||||||
DB_USER="$(grep 'username:' < ${ZAMMAD_DIR}/${DATABASE_CONFIG} | sed -e 's/.*username:\(\| \)//g')"
|
DB_USER="$(grep 'username:' < ${ZAMMAD_DIR}/config/database.yml | sed -e 's/.*username:\(\| \)//g')"
|
||||||
DB_PASS="$(grep 'password:' < ${ZAMMAD_DIR}/${DATABASE_CONFIG} | sed -e 's/.*password:\(\| \)//g')"
|
DB_PASS="$(grep 'password:' < ${ZAMMAD_DIR}/config/database.yml | sed -e 's/.*password:\(\| \)//g')"
|
||||||
|
|
||||||
if [ "${DEBUG}" == "yes" ]; then
|
if [ "${DEBUG}" == "yes" ]; then
|
||||||
echo "adapter=${DB_ADAPTER} dbname=${DB_NAME} dbuser=${DB_USER} dbpass=${DB_PASS}"
|
echo "adapter=${DB_ADAPTER} dbname=${DB_NAME} dbuser=${DB_USER} dbpass=${DB_PASS}"
|
||||||
|
@ -35,25 +39,28 @@ function backup_dir_create () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function backup_files () {
|
function backup_files () {
|
||||||
|
echo "creating file backup..."
|
||||||
tar -czf ${BACKUP_DIR}/${TIMESTAMP}_zammad_files.tar.gz ${ZAMMAD_DIR}
|
tar -czf ${BACKUP_DIR}/${TIMESTAMP}_zammad_files.tar.gz ${ZAMMAD_DIR}
|
||||||
}
|
}
|
||||||
|
|
||||||
function backup_db () {
|
function backup_db () {
|
||||||
if [ "${DB_ADAPTER}" == "mysql2" ]; then
|
if [ "${DB_ADAPTER}" == "mysql2" ]; then
|
||||||
|
echo "creating mysql backup..."
|
||||||
mysqldump --opt --single-transaction -u${DB_USER} -p${DB_PASS} ${DB_NAME} | gzip > ${BACKUP_DIR}/${TIMESTAMP}_zammad_db.mysql.gz
|
mysqldump --opt --single-transaction -u${DB_USER} -p${DB_PASS} ${DB_NAME} | gzip > ${BACKUP_DIR}/${TIMESTAMP}_zammad_db.mysql.gz
|
||||||
elif [ "${DB_ADAPTER}" == "postgresql" ]; then
|
elif [ "${DB_ADAPTER}" == "postgresql" ]; then
|
||||||
|
echo "creating postgresql backup..."
|
||||||
su -c "pg_dump -c ${DB_NAME} | gzip > /tmp/${TIMESTAMP}_zammad_db.psql.gz" postgres
|
su -c "pg_dump -c ${DB_NAME} | gzip > /tmp/${TIMESTAMP}_zammad_db.psql.gz" postgres
|
||||||
mv /tmp/${TIMESTAMP}_zammad_db.psql.gz ${BACKUP_DIR}
|
mv /tmp/${TIMESTAMP}_zammad_db.psql.gz ${BACKUP_DIR}
|
||||||
else
|
else
|
||||||
echo "DB ADAPTER not found. if its sqlite backup is already saved in filebackup"
|
echo "DB ADAPTER not found. if its sqlite backup is already saved in the filebackup"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_database_config_exists () {
|
function check_database_config_exists () {
|
||||||
if [ -f ${ZAMMAD_DIR}/${DATABASE_CONFIG} ]; then
|
if [ -f ${ZAMMAD_DIR}/config/database.yml ]; then
|
||||||
get_db_credentials
|
get_db_credentials
|
||||||
else
|
else
|
||||||
echo -e "${ZAMMAD_DIR}/${DATABASE_CONFIG} is missing. is zammad configured yet? \nAborting restore..."
|
echo -e "${ZAMMAD_DIR}/config/database.yml is missing. is zammad configured yet? \nAborting..."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -155,6 +162,18 @@ function restore_zammad () {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function restore_message () {
|
function start_backup_message () {
|
||||||
echo "# Zammad restored!"
|
echo -e "\n# Zammad backup started - $(date)!\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
function start_restore_message () {
|
||||||
|
echo -e "\n# Zammad restored started - $(date)!\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
function finished_backup_message () {
|
||||||
|
echo -e "\n# Zammad backuped successfully - $(date)!\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
function finished_restore_message () {
|
||||||
|
echo -e "\n# Zammad restored successfully - $(date)!\n"
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,14 +4,25 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin:
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin:
|
||||||
|
BACKUP_SCRIPT_PATH="$(dirname $(realpath $0))"
|
||||||
|
|
||||||
# import config
|
if [ -f "${BACKUP_SCRIPT_PATH}/config" ]; then
|
||||||
. /opt/zammad/contrib/backup/config
|
# import config
|
||||||
|
. ${BACKUP_SCRIPT_PATH}/config
|
||||||
|
else
|
||||||
|
echo -e "\n The 'config' file is missing!"
|
||||||
|
echo -e " Please copy ${BACKUP_SCRIPT_PATH}/config.dist to ${BACKUP_SCRIPT_PATH}/config before running $0!\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# import functions
|
# import functions
|
||||||
. /opt/zammad/contrib/backup/functions
|
. ${BACKUP_SCRIPT_PATH}/functions
|
||||||
|
|
||||||
# exec backup
|
# exec backup
|
||||||
|
start_backup_message
|
||||||
|
|
||||||
|
get_zammad_dir
|
||||||
|
|
||||||
check_database_config_exists
|
check_database_config_exists
|
||||||
|
|
||||||
delete_old_backups
|
delete_old_backups
|
||||||
|
@ -23,3 +34,5 @@ backup_dir_create
|
||||||
backup_files
|
backup_files
|
||||||
|
|
||||||
backup_db
|
backup_db
|
||||||
|
|
||||||
|
finished_backup_message
|
||||||
|
|
|
@ -4,14 +4,25 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin:
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin:
|
||||||
|
BACKUP_SCRIPT_PATH="$(dirname $(realpath $0))"
|
||||||
|
|
||||||
# import config
|
if [ -f "${BACKUP_SCRIPT_PATH}/config" ]; then
|
||||||
. /opt/zammad/contrib/backup/config
|
# import config
|
||||||
|
. ${BACKUP_SCRIPT_PATH}/config
|
||||||
|
else
|
||||||
|
echo -e "\n The 'config' file is missing!"
|
||||||
|
echo -e " Please copy ${BACKUP_SCRIPT_PATH}/config.dist to ${BACKUP_SCRIPT_PATH}/config before running $0!\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# import functions
|
# import functions
|
||||||
. /opt/zammad/contrib/backup/functions
|
. ${BACKUP_SCRIPT_PATH}/functions
|
||||||
|
|
||||||
# exec restore
|
# exec restore
|
||||||
|
start_restore_message
|
||||||
|
|
||||||
|
get_zammad_dir
|
||||||
|
|
||||||
restore_warning "${1}"
|
restore_warning "${1}"
|
||||||
|
|
||||||
check_database_config_exists
|
check_database_config_exists
|
||||||
|
@ -28,4 +39,4 @@ restore_zammad
|
||||||
|
|
||||||
start_zammad
|
start_zammad
|
||||||
|
|
||||||
restore_message
|
finished_restore_message
|
||||||
|
|
Loading…
Reference in a new issue