HEX
Server: LiteSpeed
System: Linux hz1.serversetup.co 4.18.0-513.18.1.el8_9.x86_64 #1 SMP Thu Feb 22 03:02:37 EST 2024 x86_64
User: axonvira (1009)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system,proc_open,curl_multi_exec,show_source
Upload Files
File: //usr/local/src/sqlbackup2.sh
#!/bin/bash
####################################################
#				FTP backup script.
#

####################################################
#Backup all databases except the followings:
#information_schema and performance_schema and mysql
#

#Database location, hostname or IP address. (If using the hostname DO NOT forget to define it in /etc/hosts file)
DB_HOST="localhost"

#################################
#Fill FTP credentials. If you only have one FTP server, leave one of the following parameters block blank.
#

#FTP1
FTP1HOSTNAME='eubck1.serversetup.co'
FTP1USERNAME='eubck'
FTP1PASSWORD='F9t5pQcn'

#FTP2
FTP2HOSTNAME=''
FTP2USERNAME=''
FTP2PASSWORD=''

################################
#Enable or Disable FTP transfer.
FTP1_TRANSFER=yes
FTP2_TRANSFER=no

###############################################################################################
#To delete the backup folder -which is $ROOTPATH- enable the following parameter.(values:yes/no)
#
DeleteAfterTransfer=yes

###################################################################
#Cheking whether the system has DirectAdmin or Cpanel control panel
#

DAP="/usr/local/directadmin/conf/mysql.conf"
CPP="/root/.my.cnf"

if [ -f $DAP ]
then
	SYSTEM="Directadmin";
elif [ -f $CPP ]
then
 	SYSTEM="Cpanel";
else 
	echo "No Control Panel Detected";
	exit;
fi

if [ $SYSTEM == "Directadmin" ]
then
	DBUSER=$(cat $DAP|grep user|cut -d "=" -f2);
	DBPASSWORD=$(cat $DAP|grep passwd|cut -d "=" -f2);
else
        DBUSER_TEMP=$(cat $CPP|grep user);
        DBUSER=${DBUSER_TEMP#user=}
        DBPASSWORD_TEMP=$(cat $CPP|grep password);
        DBPASSWORD=${DBPASSWORD_TEMP#password=}
        DBPASSWORD=${DBPASSWORD#"\""}
        DBPASSWORD=${DBPASSWORD%"\""}

fi


echo "$(date "+%Y/%d/%m %H:%M:%S"): System Control Panel is: $SYSTEM." >> $ROOTPATH/dump_log;

DATE=$(date "+%Y_%d_%m")
ROOTPATH=/home/backup/databases

##Check whether the destination exists or not
if [ ! -d "$ROOTPATH" ]; then
    mkdir -p $ROOTPATH
    echo "$(date "+%Y/%d/%m %H:%M:%S"): $ROOTPATH Folder is Created." >> $ROOTPATH/dump_log;
else
    echo "$(date "+%Y/%d/%m %H:%M:%S"): $ROOTPATH Folder Exists." >> $ROOTPATH/dump_log;
fi

CHECK_MYSQL_AVAILABILITY=$(mysqladmin -h $DB_HOST -u$DBUSER -p$DBPASSWORD ping 2>>$ROOTPATH/dump_log|wc -l);


if [ $CHECK_MYSQL_AVAILABILITY == '1' ]
then
    echo "$(date "+%Y/%d/%m %H:%M:%S"): Successfully Connected to MySql Server" >> $ROOTPATH/dump_log;

    echo "$(date "+%Y/%d/%m %H:%M:%S"): Backup Process Started." >> $ROOTPATH/dump_log;
    
    cd $ROOTPATH
    mkdir backup_$DATE
    cd backup_$DATE
     
    mysql -h $DB_HOST -u$DBUSER -p$DBPASSWORD -e 'show databases'|egrep -v '(Database|performance_schema|information_schema|mysql)'|\
    while read dbname;
 	do
		echo "$(date "+%Y/%d/%m %H:%M:%S"): Backup $dbname Started." >> $ROOTPATH/dump_log;
		mysqldump -h $DB_HOST -u$DBUSER -p$DBPASSWORD $dbname 2>>$ROOTPATH/dump_log |gzip > $dbname.sql.gz
		echo "$(date "+%Y/%d/%m %H:%M:%S"): Backup $dbname Finished." >> $ROOTPATH/dump_log;
	done;
else
    echo "$(date "+%Y/%d/%m %H:%M:%S"): Backup process has been finished with errors. Check $ROOTPATH/dump_log for more info.";
    exit
fi


echo "$(date "+%Y/%d/%m %H:%M:%S"): Backup Process Has been Finished Successfully" >> $ROOTPATH/dump_log;

######################################################
#Transfer Backup files Over FTP to FTP1
#

if [ $FTP1_TRANSFER == 'no' ]
then
   exit;
fi
  echo "$(date "+%Y/%d/%m %H:%M:%S"): FTP1 Transfer to FTP1 Has been Started" >> $ROOTPATH/dump_log;

  ftp -n -v $FTP1HOSTNAME << EOT
  user $FTP1USERNAME $FTP1PASSWORD
  prompt
  binary
  cd hz1/sql2/
  mput *
  bye
EOT
  echo "$(date "+%Y/%d/%m %H:%M:%S"): FTP1 Transfer to FTP1 Has been Completed" >> $ROOTPATH/dump_log;

if [ $DeleteAfterTransfer == 'yes' ]
then
	cd ..
	rm -rf backup_$DATE;	
	echo "$(date "+%Y/%d/%m %H:%M:%S"): Backup Folder backup_$DATE Has been Deleted Successfully" >> $ROOTPATH/dump_log;
fi

#######################################################
#Transfer Backup files Over FTP to FTP2 backup storage
#

if [ $FTP2_TRANSFER == 'no' ]
then
   exit;
fi
  echo "$(date "+%Y/%d/%m %H:%M:%S"): FTP2 Transfer to FTP2 Has been Started" >> $ROOTPATH/dump_log;

  ftp -n -v $FTP2HOSTNAME << EOT
  user $FTP2USERNAME $FTP2PASSWORD
  prompt
  binary
  cd backupdb 
  mput *
  bye
EOT
  echo "$(date "+%Y/%d/%m %H:%M:%S"): FTP2 Transfer to FTP2 Has been Completed" >> $ROOTPATH/dump_log;