Browse Source

update version end add type compression 23.05.2022:13.26

root 1 year ago
parent
commit
9b11577f97
2 changed files with 101 additions and 26 deletions
  1. 89 26
      src/back_db.sh
  2. 12 0
      src/restore_gz-pgsql.sh

+ 89 - 26
src/back_db.sh

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

+ 12 - 0
src/restore_gz-pgsql.sh

@@ -0,0 +1,12 @@
1
+#!/bin/bash
2
+# параметром является файл sql дампа БД
3
+pam="$1";
4
+dbname="$2";
5
+if [[ $pam = "" ]] && [[ $dbname = "" ]];
6
+    then
7
+	echo "Нет параметров. Пример: restore_db backup.sql.gz dbname";
8
+    else
9
+	zcat $pam|sudo -u postgres psql -d $dbname
10
+fi
11
+exit 0
12
+