|
@@ -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
|