123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #!/bin/bash
- #
- # license: GPL V2.0
- # version: 1.3.2
- # script author: Koshuba V - stvixfree@gmail.com
- # 2022
- ## only pgsql & mysql
- #
- ## dependencies scripts
- #<tools_script>
- pkgdep=("postgresql-client" "mariadb-client"); # packages
- get_tools=( "pg_dump" "mysqldump" ); # tools for script
- #</tools_script>
- ## only pgsql & mysql
- ## the array database name
- DBDATA=( "base1" "base2" );
- ## the array backup paths
- BACKPATH=( "/backup/db" "/backup/db" );
- ## the array login for databases
- LOGINDB=( "dblogin1" "dblogin2" );
- ## the array pass for databases
- PASSWDB=( "mypassdb1" "mypassdb2" );
- ## the array type databases
- TYPEDB=( "pgsql" "mysql" )
- ## the array hosts
- HOSTDB=( "10.1.0.2" "10.1.0.7" )
- ## log file
- LOG_FILE="/var/log/syslog.log";
- #
- MESS_OK="Резервное копирвание базы $DBNAME выполнено"; # Backup database $ DBNAME done
- MESS_FAIL="Ошибка резервного копирования базы $DBNAME"; # Backup database $ DBNAME error
- dbname="none";
- #########################################################
- #<Fn_get-tools>
- function getTools() {
- for ((itools=0; itools != ${#get_tools[@]}; itools++))
- do
- checktool=$(whereis -b ${get_tools[$itools]}|awk '/^'${get_tools[$itools]}':/{print $2}')
- if [[ $checktool = "" ]];
- then
- sudo apt install ${pkgdep[$itools]};
- fi
- checktool=$(whereis -b ${get_tools[$itools]}|awk '/^'${get_tools[$itools]}':/{print $2}')
- if [[ $checktool != "" ]];
- then
- eval get_${get_tools[$itools]}=$(whereis -b ${get_tools[$itools]}|awk '/^'${get_tools[$itools]}':/{print $2}');
- list_tools[${#list_tools[@]}]="$(whereis -b ${get_tools[$itools]}|awk '/^'${get_tools[$itools]}':/{print $2}')";
- else
- echo "Sorry, there are no required packages to work, please install: ${pkgdep[@]}"
- exit 0;
- fi
- done
- backDB;
- }
- function backDB() {
- for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
- do
- rdate=$(date +%d%m%y);
- dbname=${DBDATA[$dbinx]};
- rpath=${BACKPATH[$dbinx]};
- dbtype=${TYPEDB[$dbinx]};
- dblogin=${LOGINDB[$dbinx]}
- dbpass=${PASSWDB[$dbinx]}
- dbhost=${HOSTDB[$dbinx]}
- cd $rpath;
- if [ "$dbtype" = "pgsql" ];
- then
- if [ ! -d $rpath/$dbname ];
- then
- mkdir -p $rpath/$dbname;
- fi
- sudo pg_dump -h$dbhost -u$dblogin -p$dbpass $dbname > $rpath/$dbname/$dbname"_"$rdate.sql
- tar -cJf $rpath/$dbname/$dbname"_"$rdate.tar.xz $rpath/$dbname/$dbname"_"$rdate.sql;
- rm $rpath/$dbname/$dbname"_"$rdate.sql
- echo "$(date) -- backup pgbase $MESS_OK">>$LOG_FILE
- date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_OK" admin@spikcom.ru
- fi
- if [ "$dbtype" = "mysql" ];
- then
- if [ ! -d $rpath/$dbname ];
- then
- mkdir -p $rpath/$dbname;
- fi
- sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname | pigz -c9 > $rpath/$dbname/$dbname"_"$rdate.sql.gz
- echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE
- date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_OK" admin@spikcom.ru
- fi
- cd;
- done
- }
- getTools;
- exit 0
|