Browse Source

added remote work with hosts and autoinstall packages for script (debian/ubuntu) 05.04.22|03:51

root 2 years ago
parent
commit
e9699894f1
1 changed files with 56 additions and 13 deletions
  1. 56 13
      src/back_db.sh

+ 56 - 13
src/back_db.sh

@@ -1,9 +1,17 @@
1 1
 #!/bin/bash
2 2
 #
3 3
 # license: GPL V2.0
4
-# version: 1.3.0
4
+# version: 1.3.2
5 5
 # script author: Koshuba V - stvixfree@gmail.com
6
+# 2022
7
+## only pgsql & mysql
6 8
 #
9
+## dependencies scripts
10
+#<tools_script>
11
+pkgdep=("postgresql-client" "mariadb-client");	# packages
12
+get_tools=( "pg_dump" "mysqldump"  ); 		# tools for script
13
+#</tools_script>
14
+
7 15
 ## only pgsql & mysql
8 16
 ## the array database name
9 17
 DBDATA=( "base1" "base2" );
@@ -15,14 +23,41 @@ LOGINDB=( "dblogin1" "dblogin2" );
15 23
 PASSWDB=( "mypassdb1" "mypassdb2" );
16 24
 ## the array type databases
17 25
 TYPEDB=( "pgsql" "mysql" )
26
+## the array hosts
27
+HOSTDB=( "10.1.0.2" "10.1.0.7" )
18 28
 ## log file
19 29
 LOG_FILE="/var/log/syslog.log";
20
-## messages
30
+#
21 31
 MESS_OK="Резервное копирвание базы $DBNAME выполнено"; # Backup database $ DBNAME done
22 32
 MESS_FAIL="Ошибка резервного копирования базы $DBNAME"; # Backup database $ DBNAME error
23
-## intermediate values
24 33
 dbname="none";
25 34
 #########################################################
35
+
36
+#<Fn_get-tools>
37
+function getTools() {
38
+
39
+for ((itools=0; itools != ${#get_tools[@]}; itools++))
40
+ do
41
+checktool=$(whereis -b ${get_tools[$itools]}|awk '/^'${get_tools[$itools]}':/{print $2}')
42
+if [[ $checktool = "" ]];
43
+    then
44
+	sudo apt install ${pkgdep[$itools]};
45
+fi
46
+checktool=$(whereis -b ${get_tools[$itools]}|awk '/^'${get_tools[$itools]}':/{print $2}')
47
+if [[ $checktool != "" ]];
48
+    then
49
+	eval get_${get_tools[$itools]}=$(whereis -b ${get_tools[$itools]}|awk '/^'${get_tools[$itools]}':/{print $2}');
50
+	list_tools[${#list_tools[@]}]="$(whereis -b ${get_tools[$itools]}|awk '/^'${get_tools[$itools]}':/{print $2}')";
51
+    else
52
+	echo "Sorry, there are no required packages to work, please install: ${pkgdep[@]}"
53
+	exit 0;
54
+fi
55
+done
56
+backDB;
57
+}
58
+
59
+
60
+
26 61
 function backDB() {
27 62
 for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
28 63
     do
@@ -32,26 +67,34 @@ for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
32 67
     dbtype=${TYPEDB[$dbinx]};
33 68
     dblogin=${LOGINDB[$dbinx]}
34 69
     dbpass=${PASSWDB[$dbinx]}
70
+    dbhost=${HOSTDB[$dbinx]}
71
+    cd $rpath;
35 72
     if [ "$dbtype" = "pgsql" ];
36 73
      then
37
-	sudo -u postgres pg_dump -C $dbname > $rpath/$dbname"_"$rdate.sql
38
-	tar -cJf $rpath/$dbname"_"$rdate.tar.xz $rpath/$dbname"_"$rdate.sql;
39
-	rm $rpath/$dbname"_"$rdate.sql;
74
+	if [ ! -d $rpath/$dbname ];
75
+    	    then
76
+	    mkdir -p $rpath/$dbname;
77
+	    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
40 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
41 83
     fi
42 84
     if [ "$dbtype" = "mysql" ];
43 85
      then
44
-	mysqldump -u $dblogin -p$dbpass $dbname| gzip > $rpath/$dbname"_"$rdate.sql.gz
86
+	if [ ! -d $rpath/$dbname ];
87
+    	    then
88
+	    mkdir -p $rpath/$dbname;
89
+	    fi
90
+	sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname | pigz -c9 > $rpath/$dbname/$dbname"_"$rdate.sql.gz
45 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
46 93
     fi
94
+    cd;
47 95
 done
48 96
 }
49 97
 
50
-if [ ! -d $BACKPATH ];
51
-     then
52
-	mkdir -p $BACKPATH;
53
-fi
54
-
55
-backDB;
98
+getTools;
56 99
 
57 100
 exit 0