Backup database if exists.
This commit is contained in:
		| @@ -26,6 +26,7 @@ conf_file="${_src_base_dir}/conf/install_postfixadmin.conf" | |||||||
| curdir=`pwd` | curdir=`pwd` | ||||||
|  |  | ||||||
| log_file="$(mktemp)" | log_file="$(mktemp)" | ||||||
|  | backup_date="$(date +%Y-%m-%d-%H%M)" | ||||||
|  |  | ||||||
| declare -A check_entry_main_cf_arr | declare -A check_entry_main_cf_arr | ||||||
|  |  | ||||||
| @@ -424,12 +425,30 @@ echo -e "\n\n\t\033[37m\033[1mPre-installion tasks ..\033[m\n" | |||||||
| # - | # - | ||||||
| _failed=false | _failed=false | ||||||
| > $log_file | > $log_file | ||||||
| echononl "\tCreate Postfix Database '$POSTFIX_DB_NAME'" |  | ||||||
| if [ "$POSTFIX_DB_TYPE" = "mysql" ]; then  | if [[ "$POSTFIX_DB_TYPE" = "mysql" ]] ; then | ||||||
|    echo -n " (MySQL).." |  | ||||||
|    if ! mysql $mysql_credential_args -N -s -e \ |    if ! mysql $mysql_credential_args -N -s -e \ | ||||||
|       "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$POSTFIX_DB_NAME'" 2>> $log_file \ |       "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$POSTFIX_DB_NAME'" 2>> $log_file \ | ||||||
|       | grep $POSTFIX_DB_NAME >> $log_file 2>&1 ; then |       | grep $POSTFIX_DB_NAME >> $log_file 2>&1 ; then | ||||||
|  |       database_exists=false | ||||||
|  |    else | ||||||
|  |       database_exists=true | ||||||
|  |    fi | ||||||
|  | elif [[ "$POSTFIX_DB_TYPE" = "pgsql" ]]; then | ||||||
|  |    count=$(su - postgres -c "psql -q -A -t -l" | grep -c -e "^$POSTFIX_DB_NAME") | ||||||
|  |    if [[ $count -eq 0 ]];then | ||||||
|  |       database_exists=false | ||||||
|  |    else | ||||||
|  |       database_exists=true | ||||||
|  |    fi | ||||||
|  | else | ||||||
|  |    fatal "Cannot detect database type (value of  POSTFIX_DB_TYPE is neither 'mysql' nor 'pgsql')" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if ! $database_exists ; then | ||||||
|  |    echononl "\tCreate Postfix Database '$POSTFIX_DB_NAME'" | ||||||
|  |    if [ "$POSTFIX_DB_TYPE" = "mysql" ]; then  | ||||||
|  |       echo -n " (MySQL).." | ||||||
|       mysql $mysql_credential_args -N -s -e \ |       mysql $mysql_credential_args -N -s -e \ | ||||||
|          "CREATE DATABASE IF NOT EXISTS $POSTFIX_DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci" >> $log_file 2>&1 |          "CREATE DATABASE IF NOT EXISTS $POSTFIX_DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci" >> $log_file 2>&1 | ||||||
|       if [[ $? -ne 0 ]] ; then |       if [[ $? -ne 0 ]] ; then | ||||||
| @@ -450,13 +469,8 @@ if [ "$POSTFIX_DB_TYPE" = "mysql" ]; then | |||||||
|       else |       else | ||||||
|          echo_ok |          echo_ok | ||||||
|       fi |       fi | ||||||
|    else |    elif [ "$POSTFIX_DB_TYPE" = "pgsql" ]; then | ||||||
|       echo_skipped |       echo -n " (PostgreSQL).." | ||||||
|    fi |  | ||||||
| elif [ "$POSTFIX_DB_TYPE" = "pgsql" ]; then |  | ||||||
|    echo -n " (PostgreSQL).." |  | ||||||
|    count=`su - postgres -c "psql -q -A -t -l" | grep -c -e "^$POSTFIX_DB_NAME"` |  | ||||||
|    if [ $count -eq 0 ];then |  | ||||||
|       echo "CREATE ROLE $POSTFIX_DB_USER WITH LOGIN NOCREATEDB NOCREATEROLE NOSUPERUSER ENCRYPTED PASSWORD '$POSTFIX_DB_PASS'" \ |       echo "CREATE ROLE $POSTFIX_DB_USER WITH LOGIN NOCREATEDB NOCREATEROLE NOSUPERUSER ENCRYPTED PASSWORD '$POSTFIX_DB_PASS'" \ | ||||||
|          | su - postgres -c "psql" >> $log_file 2>&1 |          | su - postgres -c "psql" >> $log_file 2>&1 | ||||||
|       if [[ $? -ne 0 ]] ; then |       if [[ $? -ne 0 ]] ; then | ||||||
| @@ -472,8 +486,27 @@ elif [ "$POSTFIX_DB_TYPE" = "pgsql" ]; then | |||||||
|       else |       else | ||||||
|          echo_ok |          echo_ok | ||||||
|       fi |       fi | ||||||
|    else |    fi | ||||||
|       echo_skipped | else | ||||||
|  |    echononl "\tBackup Postfix Database '$POSTFIX_DB_NAME'" | ||||||
|  |    if [[ "$POSTFIX_DB_TYPE" = "mysql" ]]; then  | ||||||
|  |       echo -n " (MySQL).." | ||||||
|  |       mysqldump $mysql_credential_args --opt $POSTFIX_DB_NAME >> ${WEBSITE_BASEDIR}/${POSTFIX_DB_NAME}.${backup_date}.sql 2> $log_file | ||||||
|  |       if [[ $? -eq 0 ]]; then | ||||||
|  |          echo_ok | ||||||
|  |       else | ||||||
|  |          echo_failed | ||||||
|  |          error "$(cat $log_file)" | ||||||
|  |       fi | ||||||
|  |    elif [[ "$POSTFIX_DB_TYPE" = "pgsql" ]]; then | ||||||
|  |       echo -n " (PostgreSQL).." | ||||||
|  |       su - postgres -c "pg_dump $POSTFIX_DB_NAME" >> ${WEBSITE_BASEDIR}/${POSTFIX_DB_NAME}.${backup_date}.sql 2> $log_file | ||||||
|  |       if [[ $? -eq 0 ]]; then | ||||||
|  |          echo_ok | ||||||
|  |       else | ||||||
|  |          echo_failed | ||||||
|  |          error "$(cat $log_file)" | ||||||
|  |       fi | ||||||
|    fi |    fi | ||||||
| fi | fi | ||||||
|  |  | ||||||
| @@ -571,7 +604,7 @@ fi | |||||||
| echononl "\tBackup existing source directory 'postfixadmin-${PF_ADMIN_VERSION}'.." | echononl "\tBackup existing source directory 'postfixadmin-${PF_ADMIN_VERSION}'.." | ||||||
| if [[ -d "${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION}" ]]; then | if [[ -d "${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION}" ]]; then | ||||||
|    mv ${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION} \ |    mv ${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION} \ | ||||||
|       ${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION}.$(date +%Y%m%d-%H%M) |       ${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION}.${backup_date} | ||||||
|    if [[ $? -eq 0 ]]; then |    if [[ $? -eq 0 ]]; then | ||||||
|       echo_ok |       echo_ok | ||||||
|    else |    else | ||||||
| @@ -607,7 +640,7 @@ fi | |||||||
| echononl "\tBackup existing web-directory 'postfixadmin-${PF_ADMIN_VERSION}'.." | echononl "\tBackup existing web-directory 'postfixadmin-${PF_ADMIN_VERSION}'.." | ||||||
| if [[ -d "${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION}" ]]; then | if [[ -d "${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION}" ]]; then | ||||||
|    mv ${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION} \ |    mv ${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION} \ | ||||||
|       ${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION}.`date +%Y%m%d-%H%M` > $log_file 2>&1 |       ${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION}.${backup_date} > $log_file 2>&1 | ||||||
|    if [[ $? -eq 0 ]]; then |    if [[ $? -eq 0 ]]; then | ||||||
|        echo_ok |        echo_ok | ||||||
|    else |    else | ||||||
| @@ -1349,7 +1382,7 @@ fi | |||||||
|  |  | ||||||
| echononl "\tBackup existing script 'vacation.pl'" | echononl "\tBackup existing script 'vacation.pl'" | ||||||
| if [[ -f "/var/spool/vacation/vacation.pl" ]] ; then | if [[ -f "/var/spool/vacation/vacation.pl" ]] ; then | ||||||
|    mv /var/spool/vacation/vacation.pl /var/spool/vacation/vacation.pl.$(date +%Y%m%d-%H%M) > "$log_file" 2>&1 |    mv /var/spool/vacation/vacation.pl /var/spool/vacation/vacation.pl.${backup_date} > "$log_file" 2>&1 | ||||||
|    if [[ $? -ne 0 ]]; then |    if [[ $? -ne 0 ]]; then | ||||||
|       echo_failed |       echo_failed | ||||||
|       error "$(cat $log_file)" |       error "$(cat $log_file)" | ||||||
| @@ -1432,7 +1465,7 @@ fi | |||||||
|  |  | ||||||
| echononl "\tBackup existing file '/etc/postfixadmin/vacation.conf'" | echononl "\tBackup existing file '/etc/postfixadmin/vacation.conf'" | ||||||
| if [[ -f "/etc/postfixadmin/vacation.conf" ]]; then | if [[ -f "/etc/postfixadmin/vacation.conf" ]]; then | ||||||
|    mv /etc/postfixadmin/vacation.conf /etc/postfixadmin/vacation.conf.$(date +%Y%m%d-%H%M) > "$log_file" 2>&1 |    mv /etc/postfixadmin/vacation.conf /etc/postfixadmin/vacation.conf.${backup_date} > "$log_file" 2>&1 | ||||||
|    if [[ $? -eq 0 ]];then |    if [[ $? -eq 0 ]];then | ||||||
|       echo_ok |       echo_ok | ||||||
|    else |    else | ||||||
| @@ -1985,7 +2018,7 @@ fi | |||||||
| echononl "\tBackup existing post-deletion script" | echononl "\tBackup existing post-deletion script" | ||||||
| if [[ -f "/usr/local/bin/postfixadmin-mailbox-postdeletion.sh" ]]; then | if [[ -f "/usr/local/bin/postfixadmin-mailbox-postdeletion.sh" ]]; then | ||||||
|    mv /usr/local/bin/postfixadmin-mailbox-postdeletion.sh \ |    mv /usr/local/bin/postfixadmin-mailbox-postdeletion.sh \ | ||||||
|       /usr/local/bin/postfixadmin-mailbox-postdeletion.sh.$(date +%Y%m%d-%H%M) > $log_file 2>&1 |       /usr/local/bin/postfixadmin-mailbox-postdeletion.sh.${backup_date} > $log_file 2>&1 | ||||||
|    if [[ $? -eq 0 ]]; then |    if [[ $? -eq 0 ]]; then | ||||||
|       echo_ok |       echo_ok | ||||||
|    else |    else | ||||||
| @@ -2139,7 +2172,7 @@ fi | |||||||
| echononl "\tBackup existing post-deletion script" | echononl "\tBackup existing post-deletion script" | ||||||
| if [[ -f "/usr/local/bin/postfixadmin-domain-postdeletion.sh" ]]; then | if [[ -f "/usr/local/bin/postfixadmin-domain-postdeletion.sh" ]]; then | ||||||
|    mv /usr/local/bin/postfixadmin-domain-postdeletion.sh \ |    mv /usr/local/bin/postfixadmin-domain-postdeletion.sh \ | ||||||
|       /usr/local/bin/postfixadmin-domain-postdeletion.sh.$(date +%Y%m%d-%H%M) > $log_file 2>&1 |       /usr/local/bin/postfixadmin-domain-postdeletion.sh.${backup_date} > $log_file 2>&1 | ||||||
|    if [[ $? -eq 0 ]]; then |    if [[ $? -eq 0 ]]; then | ||||||
|       echo_ok |       echo_ok | ||||||
|    else |    else | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user