| 
				
			 | 
			
			
				@@ -1,33 +1,37 @@ 
			 | 
		
	
		
			
			| 
				
					1
				
			 | 
			
				
					1
				
			 | 
			
			
				 #!/bin/bash 
			 | 
		
	
		
			
			| 
				
					2
				
			 | 
			
				
					2
				
			 | 
			
			
				 # 
			 | 
		
	
		
			
			| 
				
					3
				
			 | 
			
				
					3
				
			 | 
			
			
				 # license: GPL V2.0 
			 | 
		
	
		
			
			| 
				
					4
				
			 | 
			
				
			 | 
			
			
				-# version: 1.3.2 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					4
				
			 | 
			
			
				+# version: 1.3.3 
			 | 
		
	
		
			
			| 
				
					5
				
			 | 
			
				
					5
				
			 | 
			
			
				 # script author: Koshuba V - stvixfree@gmail.com 
			 | 
		
	
		
			
			| 
				
					6
				
			 | 
			
				
					6
				
			 | 
			
			
				 # 2022 
			 | 
		
	
		
			
			| 
				
					7
				
			 | 
			
				
					7
				
			 | 
			
			
				 ## only pgsql & mysql 
			 | 
		
	
		
			
			| 
				
					8
				
			 | 
			
				
					8
				
			 | 
			
			
				 # 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					9
				
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
					9
				
			 | 
			
				
					10
				
			 | 
			
			
				 ## dependencies scripts 
			 | 
		
	
		
			
			| 
				
					10
				
			 | 
			
				
					11
				
			 | 
			
			
				 #<tools_script> 
			 | 
		
	
		
			
			| 
				
					11
				
			 | 
			
				
			 | 
			
			
				-pkgdep=("postgresql-client" "mariadb-client");	# packages 
			 | 
		
	
		
			
			| 
				
					12
				
			 | 
			
				
			 | 
			
			
				-get_tools=( "pg_dump" "mysqldump"  ); 		# tools for script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					12
				
			 | 
			
			
				+pkgdep=( "postgresql-client" "mariadb-client" "pigz" );	# packages 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					13
				
			 | 
			
			
				+get_tools=( "pg_dump" "mysqldump" "pigz"  ); 		# tools for script 
			 | 
		
	
		
			
			| 
				
					13
				
			 | 
			
				
					14
				
			 | 
			
			
				 #</tools_script> 
			 | 
		
	
		
			
			| 
				
					14
				
			 | 
			
				
					15
				
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
					15
				
			 | 
			
				
					16
				
			 | 
			
			
				 ## only pgsql & mysql 
			 | 
		
	
		
			
			| 
				
					16
				
			 | 
			
				
					17
				
			 | 
			
			
				 ## the array database name 
			 | 
		
	
		
			
			| 
				
					17
				
			 | 
			
				
			 | 
			
			
				-DBDATA=( "base1" "base2" ); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					18
				
			 | 
			
			
				+DBDATA=( "dbname1" "dbname2" "dbname3" ); 
			 | 
		
	
		
			
			| 
				
					18
				
			 | 
			
				
					19
				
			 | 
			
			
				 ## the array backup paths 
			 | 
		
	
		
			
			| 
				
					19
				
			 | 
			
				
			 | 
			
			
				-BACKPATH=( "/backup/db" "/backup/db" ); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					20
				
			 | 
			
			
				+BACKPATH=( "/arhiv" "/arhiv" "/arhiv" ); 
			 | 
		
	
		
			
			| 
				
					20
				
			 | 
			
				
					21
				
			 | 
			
			
				 ## the array login for databases 
			 | 
		
	
		
			
			| 
				
					21
				
			 | 
			
				
			 | 
			
			
				-LOGINDB=( "dblogin1" "dblogin2" ); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					22
				
			 | 
			
			
				+LOGINDB=( "login1" "login2" "login3" ); 
			 | 
		
	
		
			
			| 
				
					22
				
			 | 
			
				
					23
				
			 | 
			
			
				 ## the array pass for databases 
			 | 
		
	
		
			
			| 
				
					23
				
			 | 
			
				
			 | 
			
			
				-PASSWDB=( "mypassdb1" "mypassdb2" ); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					24
				
			 | 
			
			
				+PASSWDB=( "mypassdb1" "mypassdb2" "mypassdb3" ); 
			 | 
		
	
		
			
			| 
				
					24
				
			 | 
			
				
					25
				
			 | 
			
			
				 ## the array type databases 
			 | 
		
	
		
			
			| 
				
					25
				
			 | 
			
				
			 | 
			
			
				-TYPEDB=( "pgsql" "mysql" ) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					26
				
			 | 
			
			
				+TYPEDB=( "pgsql" "pgsql" "mysql" ) 
			 | 
		
	
		
			
			| 
				
					26
				
			 | 
			
				
					27
				
			 | 
			
			
				 ## the array hosts 
			 | 
		
	
		
			
			| 
				
					27
				
			 | 
			
				
			 | 
			
			
				-HOSTDB=( "10.1.0.2" "10.1.0.7" ) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					28
				
			 | 
			
			
				+HOSTDB=( "127.0.0.1" "127.0.0.1" "10.0.3.1" ) 
			 | 
		
	
		
			
			| 
				
					28
				
			 | 
			
				
					29
				
			 | 
			
			
				 ## log file 
			 | 
		
	
		
			
			| 
				
					29
				
			 | 
			
				
					30
				
			 | 
			
			
				 LOG_FILE="/var/log/syslog.log"; 
			 | 
		
	
		
			
			| 
				
					30
				
			 | 
			
				
					31
				
			 | 
			
			
				 # 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					32
				
			 | 
			
			
				+## email admin 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					33
				
			 | 
			
			
				+adminmail="admindb@myhost.ru"; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					34
				
			 | 
			
			
				+# 
			 | 
		
	
		
			
			| 
				
					31
				
			 | 
			
				
					35
				
			 | 
			
			
				 MESS_OK="Резервное копирвание базы $DBNAME выполнено"; # Backup database $ DBNAME done 
			 | 
		
	
		
			
			| 
				
					32
				
			 | 
			
				
					36
				
			 | 
			
			
				 MESS_FAIL="Ошибка резервного копирования базы $DBNAME"; # Backup database $ DBNAME error 
			 | 
		
	
		
			
			| 
				
					33
				
			 | 
			
				
					37
				
			 | 
			
			
				 dbname="none"; 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -56,12 +60,10 @@ done 
			 | 
		
	
		
			
			| 
				
					56
				
			 | 
			
				
					60
				
			 | 
			
			
				 backDB; 
			 | 
		
	
		
			
			| 
				
					57
				
			 | 
			
				
					61
				
			 | 
			
			
				 } 
			 | 
		
	
		
			
			| 
				
					58
				
			 | 
			
				
					62
				
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
					59
				
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				
					60
				
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				
					61
				
			 | 
			
				
					63
				
			 | 
			
			
				 function backDB() { 
			 | 
		
	
		
			
			| 
				
					62
				
			 | 
			
				
					64
				
			 | 
			
			
				 for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++)) 
			 | 
		
	
		
			
			| 
				
					63
				
			 | 
			
				
					65
				
			 | 
			
			
				     do 
			 | 
		
	
		
			
			| 
				
					64
				
			 | 
			
				
			 | 
			
			
				-    rdate=$(date +%d%m%y); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					66
				
			 | 
			
			
				+    rdate=$(date +%d-%m-%y_%H-%M); 
			 | 
		
	
		
			
			| 
				
					65
				
			 | 
			
				
					67
				
			 | 
			
			
				     dbname=${DBDATA[$dbinx]}; 
			 | 
		
	
		
			
			| 
				
					66
				
			 | 
			
				
					68
				
			 | 
			
			
				     rpath=${BACKPATH[$dbinx]}; 
			 | 
		
	
		
			
			| 
				
					67
				
			 | 
			
				
					69
				
			 | 
			
			
				     dbtype=${TYPEDB[$dbinx]}; 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -75,11 +77,15 @@ for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++)) 
			 | 
		
	
		
			
			| 
				
					75
				
			 | 
			
				
					77
				
			 | 
			
			
				     	    then 
			 | 
		
	
		
			
			| 
				
					76
				
			 | 
			
				
					78
				
			 | 
			
			
				 	    mkdir -p $rpath/$dbname; 
			 | 
		
	
		
			
			| 
				
					77
				
			 | 
			
				
					79
				
			 | 
			
			
				 	    fi 
			 | 
		
	
		
			
			| 
				
					78
				
			 | 
			
				
			 | 
			
			
				-	sudo pg_dump -h$dbhost -u$dblogin -p$dbpass $dbname > $rpath/$dbname/$dbname"_"$rdate.sql 
			 | 
		
	
		
			
			| 
				
					79
				
			 | 
			
				
			 | 
			
			
				-	tar -cJf $rpath/$dbname/$dbname"_"$rdate.tar.xz $rpath/$dbname/$dbname"_"$rdate.sql; 
			 | 
		
	
		
			
			| 
				
					80
				
			 | 
			
				
			 | 
			
			
				-	rm $rpath/$dbname/$dbname"_"$rdate.sql 
			 | 
		
	
		
			
			| 
				
					81
				
			 | 
			
				
			 | 
			
			
				-	echo "$(date) -- backup pgbase $MESS_OK">>$LOG_FILE 
			 | 
		
	
		
			
			| 
				
					82
				
			 | 
			
				
			 | 
			
			
				-	date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_OK" admin@spikcom.ru 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					80
				
			 | 
			
			
				+	getdb=postgresql://$dblogin:$dbpass@$dbhost:5432/$dbname 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					81
				
			 | 
			
			
				+	if sudo pg_dump $getdb|pigz -p2 -c9> $rpath/$dbname/$dbname"_"$rdate.gz 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					82
				
			 | 
			
			
				+	    then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					83
				
			 | 
			
			
				+		echo "$(date) -- backup pgbase $MESS_OK">>$LOG_FILE 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					84
				
			 | 
			
			
				+		date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_OK" $adminmail 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					85
				
			 | 
			
			
				+	else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					86
				
			 | 
			
			
				+		echo "$(date) -- backup pgbase $MESS_FAIL">>$LOG_FILE 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					87
				
			 | 
			
			
				+		date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_FAIL" $adminmail 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					88
				
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
					83
				
			 | 
			
				
					89
				
			 | 
			
			
				     fi 
			 | 
		
	
		
			
			| 
				
					84
				
			 | 
			
				
					90
				
			 | 
			
			
				     if [ "$dbtype" = "mysql" ]; 
			 | 
		
	
		
			
			| 
				
					85
				
			 | 
			
				
					91
				
			 | 
			
			
				      then 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -87,10 +93,14 @@ for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++)) 
			 | 
		
	
		
			
			| 
				
					87
				
			 | 
			
				
					93
				
			 | 
			
			
				     	    then 
			 | 
		
	
		
			
			| 
				
					88
				
			 | 
			
				
					94
				
			 | 
			
			
				 	    mkdir -p $rpath/$dbname; 
			 | 
		
	
		
			
			| 
				
					89
				
			 | 
			
				
					95
				
			 | 
			
			
				 	    fi 
			 | 
		
	
		
			
			| 
				
					90
				
			 | 
			
				
			 | 
			
			
				-	sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname | pigz -c9 > $rpath/$dbname/$dbname"_"$rdate.sql.gz 
			 | 
		
	
		
			
			| 
				
					91
				
			 | 
			
				
			 | 
			
			
				-	echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE 
			 | 
		
	
		
			
			| 
				
					92
				
			 | 
			
				
			 | 
			
			
				-	date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_OK" admin@spikcom.ru 
			 | 
		
	
		
			
			| 
				
					93
				
			 | 
			
				
			 | 
			
			
				-    fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					96
				
			 | 
			
			
				+	if sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname | pigz -p2 -c9 > $rpath/$dbname/$dbname"_"$rdate.sql.gz 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					97
				
			 | 
			
			
				+	    then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					98
				
			 | 
			
			
				+		echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					99
				
			 | 
			
			
				+		date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_OK" $adminmail 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					100
				
			 | 
			
			
				+	    else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					101
				
			 | 
			
			
				+		echo "$(date) -- backup mysqlbase $MESS_FAIL">>$LOG_FILE 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					102
				
			 | 
			
			
				+		date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_FAIL" $adminmail 
			 | 
		
	
		
			
			| 
				
			 | 
			
				
					103
				
			 | 
			
			
				+    fi	fi 
			 | 
		
	
		
			
			| 
				
					94
				
			 | 
			
				
					104
				
			 | 
			
			
				     cd; 
			 | 
		
	
		
			
			| 
				
					95
				
			 | 
			
				
					105
				
			 | 
			
			
				 done 
			 | 
		
	
		
			
			| 
				
					96
				
			 | 
			
				
					106
				
			 | 
			
			
				 } 
			 |