Browse Source

some enhancements to backup & restore

André Bauer 7 years ago
parent
commit
acdbd4b83a

+ 0 - 10
contrib/backup/config

@@ -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 - 0
contrib/backup/config.dist

@@ -0,0 +1,8 @@
+#!/bin/bash
+#
+# zammad backup script config
+#
+
+BACKUP_DIR='/var/tmp/zammad_backup'
+HOLD_DAYS='10'
+DEBUG='no'

+ 28 - 9
contrib/backup/functions

@@ -3,6 +3,10 @@
 # zammad backup script functions
 #
 
+function get_zammad_dir () {
+  ZAMMAD_DIR="$(echo ${BACKUP_SCRIPT_PATH} | sed -e 's#/contrib/backup.*##g')"
+}
+
 function get_backup_date () {
   TIMESTAMP="$(date +'%Y%m%d%H%M%S')"
 
@@ -16,10 +20,10 @@ function delete_old_backups () {
 }
 
 function get_db_credentials () {
-  DB_ADAPTER="$(grep 'adapter:' < ${ZAMMAD_DIR}/${DATABASE_CONFIG} | sed -e 's/.*adapter:\(\| \)//g')"
-  DB_NAME="$(grep 'database:' < ${ZAMMAD_DIR}/${DATABASE_CONFIG} | sed -e 's/.*database:\(\| \) //g')"
-  DB_USER="$(grep 'username:' < ${ZAMMAD_DIR}/${DATABASE_CONFIG} | sed -e 's/.*username:\(\| \)//g')"
-  DB_PASS="$(grep 'password:' < ${ZAMMAD_DIR}/${DATABASE_CONFIG} | sed -e 's/.*password:\(\| \)//g')"
+  DB_ADAPTER="$(grep 'adapter:' < ${ZAMMAD_DIR}/config/database.yml | sed -e 's/.*adapter:\(\| \)//g')"
+  DB_NAME="$(grep 'database:' < ${ZAMMAD_DIR}/config/database.yml | sed -e 's/.*database:\(\| \) //g')"
+  DB_USER="$(grep 'username:' < ${ZAMMAD_DIR}/config/database.yml | sed -e 's/.*username:\(\| \)//g')"
+  DB_PASS="$(grep 'password:' < ${ZAMMAD_DIR}/config/database.yml | sed -e 's/.*password:\(\| \)//g')"
 
   if [ "${DEBUG}" == "yes" ]; then
     echo "adapter=${DB_ADAPTER} dbname=${DB_NAME} dbuser=${DB_USER} dbpass=${DB_PASS}"
@@ -35,25 +39,28 @@ function backup_dir_create () {
 }
 
 function backup_files () {
+  echo "creating file backup..."
   tar -czf ${BACKUP_DIR}/${TIMESTAMP}_zammad_files.tar.gz ${ZAMMAD_DIR}
 }
 
 function backup_db () {
   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
   elif [ "${DB_ADAPTER}" == "postgresql" ]; then
+    echo "creating postgresql backup..."
     su -c "pg_dump -c ${DB_NAME} | gzip > /tmp/${TIMESTAMP}_zammad_db.psql.gz" postgres
     mv /tmp/${TIMESTAMP}_zammad_db.psql.gz ${BACKUP_DIR}
   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
 }
 
 function check_database_config_exists () {
-  if [ -f ${ZAMMAD_DIR}/${DATABASE_CONFIG} ]; then
+  if [ -f ${ZAMMAD_DIR}/config/database.yml ]; then
     get_db_credentials
   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
   fi
 }
@@ -155,6 +162,18 @@ function restore_zammad () {
   fi
 }
 
-function restore_message () {
-    echo "# Zammad restored!"
+function start_backup_message () {
+    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"
 }

+ 16 - 3
contrib/backup/zammad_backup.sh

@@ -4,14 +4,25 @@
 #
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin:
+BACKUP_SCRIPT_PATH="$(dirname $(realpath $0))"
 
-# import config
-. /opt/zammad/contrib/backup/config
+if [ -f "${BACKUP_SCRIPT_PATH}/config" ]; then
+  # 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
-. /opt/zammad/contrib/backup/functions
+. ${BACKUP_SCRIPT_PATH}/functions
 
 # exec backup
+start_backup_message
+
+get_zammad_dir
+
 check_database_config_exists
 
 delete_old_backups
@@ -23,3 +34,5 @@ backup_dir_create
 backup_files
 
 backup_db
+
+finished_backup_message

+ 15 - 4
contrib/backup/zammad_restore.sh

@@ -4,14 +4,25 @@
 #
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin:
+BACKUP_SCRIPT_PATH="$(dirname $(realpath $0))"
 
-# import config
-. /opt/zammad/contrib/backup/config
+if [ -f "${BACKUP_SCRIPT_PATH}/config" ]; then
+  # 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
-. /opt/zammad/contrib/backup/functions
+. ${BACKUP_SCRIPT_PATH}/functions
 
 # exec restore
+start_restore_message
+
+get_zammad_dir
+
 restore_warning "${1}"
 
 check_database_config_exists
@@ -28,4 +39,4 @@ restore_zammad
 
 start_zammad
 
-restore_message
+finished_restore_message