|
@@ -1,7 +1,7 @@
|
1
|
1
|
#!/bin/bash
|
2
|
2
|
#
|
3
|
3
|
# license: GPL V2.0
|
4
|
|
-# version: 1.3.5
|
|
4
|
+# version: 1.3.7
|
5
|
5
|
# script author: Koshuba V - stvixfree@gmail.com
|
6
|
6
|
# 2022
|
7
|
7
|
## only pgsql & mysql
|
|
@@ -9,8 +9,8 @@
|
9
|
9
|
|
10
|
10
|
## dependencies scripts
|
11
|
11
|
#<tools_script>
|
12
|
|
-pkgdep=( "postgresql-client" "mariadb-client" ); # packages
|
13
|
|
-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
|
14
|
14
|
#</tools_script>
|
15
|
15
|
|
16
|
16
|
## only pgsql & mysql
|
|
@@ -26,9 +26,15 @@ PASSWDB=( "dbpass1" "dbpass2" "dbpass2" );
|
26
|
26
|
TYPEDB=( "pgsql" "pgsql" "mysql" )
|
27
|
27
|
## the array hosts
|
28
|
28
|
HOSTDB=( "127.0.0.1" "127.0.0.1" "10.1.0.1" )
|
|
29
|
+
|
|
30
|
+## system values
|
29
|
31
|
## log file
|
30
|
32
|
LOG_FILE="/var/log/syslog.log";
|
31
|
|
-#
|
|
33
|
+# - type compress xz (tar) or gz (pigz)
|
|
34
|
+type_arh="xz";
|
|
35
|
+# - core active for pigz
|
|
36
|
+cpu_arh="2";
|
|
37
|
+
|
32
|
38
|
## email admin
|
33
|
39
|
adminmail="admindb@mydomen.ru";
|
34
|
40
|
#
|
|
@@ -61,6 +67,60 @@ backDB;
|
61
|
67
|
}
|
62
|
68
|
|
63
|
69
|
function backDB() {
|
|
70
|
+## switch type arh
|
|
71
|
+case "$type_arh" in
|
|
72
|
+
|
|
73
|
+## type gz
|
|
74
|
+"gz" | "gz" )
|
|
75
|
+
|
|
76
|
+for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
|
|
77
|
+ do
|
|
78
|
+ rdate=$(date +%d-%m-%y_%H-%M);
|
|
79
|
+ dbname=${DBDATA[$dbinx]};
|
|
80
|
+ rpath=${BACKPATH[$dbinx]};
|
|
81
|
+ dbtype=${TYPEDB[$dbinx]};
|
|
82
|
+ dblogin=${LOGINDB[$dbinx]}
|
|
83
|
+ dbpass=${PASSWDB[$dbinx]}
|
|
84
|
+ dbhost=${HOSTDB[$dbinx]}
|
|
85
|
+ cd $rpath;
|
|
86
|
+
|
|
87
|
+ if [ "$dbtype" = "pgsql" ];
|
|
88
|
+ then
|
|
89
|
+ if [ ! -d $rpath/$dbname ];
|
|
90
|
+ then
|
|
91
|
+ mkdir -p $rpath/$dbname;
|
|
92
|
+ fi
|
|
93
|
+ if sudo PGPASSWORD=$dbpass pg_dump -C --host=$dbhost --username=$dblogin --dbname=$dbname |pigz -p$cpu_arh -c9 >$rpath/$dbname/$dbname"-pg_"$rdate.sql.gz
|
|
94
|
+ then
|
|
95
|
+ echo "$(date) -- backup pgbase (.gz) $MESS_OK">>$LOG_FILE
|
|
96
|
+ date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase (.gz) $MESS_OK" $adminmail
|
|
97
|
+ else
|
|
98
|
+ echo "$(date) -- backup pgbase (.gz) $MESS_FAIL">>$LOG_FILE
|
|
99
|
+ date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase (.gz) $MESS_FAIL" $adminmail
|
|
100
|
+ fi
|
|
101
|
+ fi
|
|
102
|
+ if [ "$dbtype" = "mysql" ];
|
|
103
|
+ then
|
|
104
|
+ if [ ! -d $rpath/$dbname ];
|
|
105
|
+ then
|
|
106
|
+ mkdir -p $rpath/$dbname;
|
|
107
|
+ fi
|
|
108
|
+ if sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname |pigz -p$cpu_arh -c9 >$rpath/$dbname/$dbname"-mysql_"$rdate.sql.gz
|
|
109
|
+ then
|
|
110
|
+ echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE
|
|
111
|
+ date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_OK" $adminmail
|
|
112
|
+ else
|
|
113
|
+ echo "$(date) -- backup mysqlbase $MESS_FAIL">>$LOG_FILE
|
|
114
|
+ date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_FAIL" $adminmail
|
|
115
|
+ fi
|
|
116
|
+ fi
|
|
117
|
+ cd;
|
|
118
|
+done
|
|
119
|
+;;
|
|
120
|
+
|
|
121
|
+## type xz or default
|
|
122
|
+* )
|
|
123
|
+
|
64
|
124
|
for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
|
65
|
125
|
do
|
66
|
126
|
rdate=$(date +%d-%m-%y_%H-%M);
|
|
@@ -71,41 +131,44 @@ for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
|
71
|
131
|
dbpass=${PASSWDB[$dbinx]}
|
72
|
132
|
dbhost=${HOSTDB[$dbinx]}
|
73
|
133
|
cd $rpath;
|
|
134
|
+
|
74
|
135
|
if [ "$dbtype" = "pgsql" ];
|
75
|
|
- then
|
76
|
|
- if [ ! -d $rpath/$dbname ];
|
77
|
|
- then
|
78
|
|
- mkdir -p $rpath/$dbname;
|
79
|
|
- fi
|
80
|
|
- if sudo PGPASSWORD=$dbpass pg_dump -C --host=$dbhost --username=$dblogin --dbname=$dbname > $rpath/$dbname/$dbname"_"$rdate.sql
|
81
|
|
- then
|
82
|
|
- tar -cJf $rpath/$dbname/$dbname"_"$rdate.tar.xz $rpath/$dbname/$dbname"_"$rdate.sql;
|
83
|
|
- rm $rpath/$dbname/$dbname"_"$rdate.sql;
|
|
136
|
+ then
|
|
137
|
+ if [ ! -d $rpath/$dbname ];
|
|
138
|
+ then
|
|
139
|
+ mkdir -p $rpath/$dbname;
|
|
140
|
+ fi
|
|
141
|
+ if sudo PGPASSWORD=$dbpass pg_dump -C --host=$dbhost --username=$dblogin --dbname=$dbname > $rpath/$dbname/$dbname"-pg_"$rdate.sql
|
|
142
|
+ then
|
|
143
|
+ tar -cJf $rpath/$dbname/$dbname"_"$rdate.tar.xz $rpath/$dbname/$dbname"-pg_"$rdate.sql;
|
|
144
|
+ rm $rpath/$dbname/$dbname"-pg_"$rdate.sql;
|
84
|
145
|
echo "$(date) -- backup pgbase $MESS_OK">>$LOG_FILE
|
85
|
146
|
date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_OK" $adminmail
|
86
|
|
- else
|
|
147
|
+ else
|
87
|
148
|
echo "$(date) -- backup pgbase $MESS_FAIL">>$LOG_FILE
|
88
|
149
|
date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_FAIL" $adminmail
|
89
|
|
- fi
|
|
150
|
+ fi
|
90
|
151
|
fi
|
91
|
152
|
if [ "$dbtype" = "mysql" ];
|
92
|
|
- then
|
93
|
|
- if [ ! -d $rpath/$dbname ];
|
94
|
|
- then
|
95
|
|
- mkdir -p $rpath/$dbname;
|
96
|
|
- fi
|
97
|
|
- if sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname > $rpath/$dbname/$dbname"_"$rdate.sql
|
98
|
|
- then
|
99
|
|
- tar -cJf $rpath/$dbname/$dbname"_"$rdate.tar.xz $rpath/$dbname/$dbname"_"$rdate.sql;
|
100
|
|
- rm $rpath/$dbname/$dbname"_"$rdate.sql;
|
|
153
|
+ then
|
|
154
|
+ if [ ! -d $rpath/$dbname ];
|
|
155
|
+ then
|
|
156
|
+ mkdir -p $rpath/$dbname;
|
|
157
|
+ fi
|
|
158
|
+ if sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname > $rpath/$dbname/$dbname"-mysql_"$rdate.sql
|
|
159
|
+ then
|
|
160
|
+ tar -cJf $rpath/$dbname/$dbname"-mysql_"$rdate.tar.xz $rpath/$dbname/$dbname"-mysql_"$rdate.sql;
|
|
161
|
+ rm $rpath/$dbname/$dbname"-mysql_"$rdate.sql;
|
101
|
162
|
echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE
|
102
|
163
|
date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_OK" $adminmail
|
103
|
|
- else
|
|
164
|
+ else
|
104
|
165
|
echo "$(date) -- backup mysqlbase $MESS_FAIL">>$LOG_FILE
|
105
|
166
|
date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_FAIL" $adminmail
|
106
|
|
- fi fi
|
|
167
|
+ fi
|
|
168
|
+ fi
|
107
|
169
|
cd;
|
108
|
170
|
done
|
|
171
|
+;;
|
109
|
172
|
}
|
110
|
173
|
|
111
|
174
|
getTools;
|