Backup database if exists.
This commit is contained in:
		| @@ -26,6 +26,7 @@ conf_file="${_src_base_dir}/conf/install_postfixadmin.conf" | ||||
| curdir=`pwd` | ||||
|  | ||||
| log_file="$(mktemp)" | ||||
| backup_date="$(date +%Y-%m-%d-%H%M)" | ||||
|  | ||||
| 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 | ||||
| > $log_file | ||||
| echononl "\tCreate Postfix Database '$POSTFIX_DB_NAME'" | ||||
| if [ "$POSTFIX_DB_TYPE" = "mysql" ]; then  | ||||
|    echo -n " (MySQL).." | ||||
|  | ||||
| if [[ "$POSTFIX_DB_TYPE" = "mysql" ]] ; then | ||||
|    if ! mysql $mysql_credential_args -N -s -e \ | ||||
|       "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 | ||||
|       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 \ | ||||
|          "CREATE DATABASE IF NOT EXISTS $POSTFIX_DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci" >> $log_file 2>&1 | ||||
|       if [[ $? -ne 0 ]] ; then | ||||
| @@ -450,13 +469,8 @@ if [ "$POSTFIX_DB_TYPE" = "mysql" ]; then | ||||
|       else | ||||
|          echo_ok | ||||
|       fi | ||||
|    else | ||||
|       echo_skipped | ||||
|    fi | ||||
| elif [ "$POSTFIX_DB_TYPE" = "pgsql" ]; then | ||||
|    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'" \ | ||||
|          | su - postgres -c "psql" >> $log_file 2>&1 | ||||
|       if [[ $? -ne 0 ]] ; then | ||||
| @@ -472,8 +486,27 @@ elif [ "$POSTFIX_DB_TYPE" = "pgsql" ]; then | ||||
|       else | ||||
|          echo_ok | ||||
|       fi | ||||
|    fi | ||||
| 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_skipped | ||||
|          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 | ||||
|  | ||||
| @@ -571,7 +604,7 @@ fi | ||||
| echononl "\tBackup existing source directory 'postfixadmin-${PF_ADMIN_VERSION}'.." | ||||
| if [[ -d "${_src_base_dir}/postfixadmin-${PF_ADMIN_VERSION}" ]]; then | ||||
|    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 | ||||
|       echo_ok | ||||
|    else | ||||
| @@ -607,7 +640,7 @@ fi | ||||
| echononl "\tBackup existing web-directory 'postfixadmin-${PF_ADMIN_VERSION}'.." | ||||
| if [[ -d "${WEBSITE_BASEDIR}/postfixadmin-${PF_ADMIN_VERSION}" ]]; then | ||||
|    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 | ||||
|        echo_ok | ||||
|    else | ||||
| @@ -1349,7 +1382,7 @@ fi | ||||
|  | ||||
| echononl "\tBackup existing script 'vacation.pl'" | ||||
| 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 | ||||
|       echo_failed | ||||
|       error "$(cat $log_file)" | ||||
| @@ -1432,7 +1465,7 @@ fi | ||||
|  | ||||
| echononl "\tBackup existing file '/etc/postfixadmin/vacation.conf'" | ||||
| 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 | ||||
|       echo_ok | ||||
|    else | ||||
| @@ -1985,7 +2018,7 @@ fi | ||||
| echononl "\tBackup existing post-deletion script" | ||||
| if [[ -f "/usr/local/bin/postfixadmin-mailbox-postdeletion.sh" ]]; then | ||||
|    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 | ||||
|       echo_ok | ||||
|    else | ||||
| @@ -2139,7 +2172,7 @@ fi | ||||
| echononl "\tBackup existing post-deletion script" | ||||
| if [[ -f "/usr/local/bin/postfixadmin-domain-postdeletion.sh" ]]; then | ||||
|    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 | ||||
|       echo_ok | ||||
|    else | ||||
|   | ||||
		Reference in New Issue
	
	Block a user