Skip to content

Commit 7113dd6

Browse files
committed
email notification in case of failed backup
1 parent 934489f commit 7113dd6

File tree

2 files changed

+45
-12
lines changed

2 files changed

+45
-12
lines changed

bin/v-backup-user

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ source $VESTA/func/main.sh
1818
source $VESTA/func/domain.sh
1919
source $VESTA/func/db.sh
2020

21+
subj="Backup $user failed"
22+
email=$(grep CONTACT $VESTA/data/users/admin/user.conf |cut -f 2 -d \')
23+
2124

2225
#----------------------------------------------------------#
2326
# Verifications #
@@ -36,6 +39,7 @@ while [ "$la" -ge "$BACKUP_LA_LIMIT" ]; do
3639
echo
3740
sleep 60
3841
if [ "$i" -ge "15" ]; then
42+
echo "LoadAverage $i is above threshold" | mail -s "$subj" $email
3943
echo "Error: LA is too high"
4044
log_event "$E_LA" "$EVENT"
4145
exit $E_LA
@@ -53,16 +57,17 @@ start_time=$(date '+%s')
5357

5458
# Creating temporary random directory
5559
tmpdir=$(mktemp -p $BACKUP -d)
60+
if [ "$?" -ne 0 ]; then
61+
echo "Can't create tmp dir $tmpdir" | mail -s "$subj" $email
62+
echo "Error: can't create tmp dir"
63+
log_event "$E_NOTEXIST" "$EVENT"
64+
fi
5665

5766
# Prinitng status
5867
echo "$(date "+%F %T") System backup for user $user"
5968
echo "TMPDIR is $tmpdir"
6069
echo
6170

62-
# Addding backup and vesta version
63-
echo "1.0" > $tmpdir/backup_version
64-
echo "$VERSION" > $tmpdir/vesta_version
65-
6671
# Vesta
6772
echo "-- VESTA --"
6873
vst='yes'
@@ -123,7 +128,7 @@ then
123128
# Parsing unsuspeneded domains
124129
conf="$USER_DATA/web.conf"
125130
for domain in $(search_objects 'web' 'SUSPENDED' "*" 'DOMAIN'); do
126-
check_exl=$(echo "$WEB"|grep -w $domain)
131+
check_exl=$(echo "$WEB"|grep -w $domain)
127132
if [ -z "$check_exl" ]; then
128133
web_list="$web_list $domain"
129134
fi
@@ -208,7 +213,7 @@ then
208213

209214
# Parsing unsuspeneded domains
210215
for domain in $(search_objects 'dns' 'SUSPENDED' "*" 'DOMAIN'); do
211-
check_exl=$(echo "$DNS"|grep -w $domain)
216+
check_exl=$(echo "$DNS"|grep -w $domain)
212217
if [ -z "$check_exl" ]; then
213218
dns_list="$dns_list $domain"
214219
fi
@@ -243,7 +248,7 @@ then
243248
# Parsing unsuspeneded domains
244249
conf="$USER_DATA/mail.conf"
245250
for domain in $(search_objects 'mail' 'SUSPENDED' "*" 'DOMAIN'); do
246-
check_exl=$(echo "$MAIL"|grep -w $domain)
251+
check_exl=$(echo "$MAIL"|grep -w $domain)
247252
if [ -z "$check_exl" ]; then
248253
mail_list="$mail_list $domain"
249254
fi
@@ -252,7 +257,6 @@ then
252257

253258
for domain in $mail_list; do
254259
echo -e "$(date "+%F %T") $domain"
255-
#mkdir -p $tmpdir/mail/$domain/accounts
256260
mkdir -p $tmpdir/mail/$domain/conf
257261
mkdir -p $tmpdir/mail/$domain/vesta
258262

@@ -290,7 +294,7 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ] && [ "$DB" != '*' ]; then
290294

291295
# Parsing unsuspeneded domains
292296
for database in $(search_objects 'db' 'SUSPENDED' "*" 'DB'); do
293-
check_exl=$(echo "$DB"|grep -w $database)
297+
check_exl=$(echo "$DB"|grep -w $database)
294298
if [ -z "$check_exl" ]; then
295299
db_list="$db_list $database"
296300
fi
@@ -379,6 +383,8 @@ local_backup(){
379383
disk_usage=$(df $BACKUP |tail -n1 |tr ' ' '\n' |grep % |cut -f 1 -d %)
380384

381385
if [ "$disk_usage" -ge "$BACKUP_DISK_LIMIT" ]; then
386+
rm -rf $tmpdir
387+
echo "Not enough disk space to run backup" | mail -s "$subj" $email
382388
echo "Error: Not enough disk space"
383389
log_event "$E_DISK" "$EVENT"
384390
exit $E_DISK
@@ -417,6 +423,8 @@ ftp_backup(){
417423
source $VESTA/conf/ftp.backup.conf
418424
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ] ||\
419425
[ -z "$BPATH" ]; then
426+
rm -rf $tmpdir
427+
echo "Can't parse ftp backup configuration" | mail -s "$subj" $email
420428
echo "Error: Parsing error"
421429
log_event "$E_PARSING" "$EVENT"
422430
exit $E_PARSING
@@ -432,6 +440,8 @@ ftp_backup(){
432440
ls $ftmpdir
433441
rm $ftmpdir"
434442
if [ ! -z "$(ftpc "$command")" ] ; then
443+
rm -rf $tmpdir
444+
echo "Can't login to ftp://$USERNAME@$HOST" | mail -s "$subj" $email
435445
echo "Error: FTP error"
436446
log_event "$E_FTP" "$EVENT"
437447
exit $E_FTP
@@ -453,12 +463,12 @@ ftp_backup(){
453463
# Uploading backup archive
454464
if [ "$localbackup" = 'yes' ]; then
455465
cd $BACKUP
456-
ftpc "put $user.$DATE.tar"
466+
ftpc "put $user.$DATE.tar"
457467
else
458-
cd $tmpdir
468+
cd $tmpdir
459469
tar -cf $BACKUP/$user.$DATE.tar .
460470
cd $BACKUP/
461-
ftpc "put $user.$DATE.tar"
471+
ftpc "put $user.$DATE.tar"
462472
rm -f $user.$DATE.tar
463473
fi
464474
echo

func/db.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,8 @@ dump_mysql_database() {
330330
host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
331331
eval $host_str
332332
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $PORT ]; then
333+
rm -rf $tmpdir
334+
echo "Can't parse mysql config" | mail -s "$subj" $email
333335
echo "Error: mysql config parsing failed"
334336
log_event "$E_PARSING" "$EVENT"
335337
exit $E_PARSING
@@ -338,12 +340,21 @@ dump_mysql_database() {
338340
query='SELECT VERSION()'
339341
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
340342
if [ '0' -ne "$?" ]; then
343+
rm -rf $tmpdir
344+
echo "Can't connect to mysql server $HOST" | mail -s "$subj" $email
341345
echo "Error: Connection failed"
342346
log_event "$E_DB $EVENT"
343347
exit $E_DB
344348
fi
345349

346350
mysqldump -h $HOST -u $USER -p$PASSWORD -P$PORT -r $dump $database
351+
if [ '0' -ne "$?" ]; then
352+
rm -rf $tmpdir
353+
echo "Can't dump mysql database $database" | mail -s "$subj" $email
354+
echo "Error: dump $database failed"
355+
log_event "$E_DB $EVENT"
356+
exit $E_DB
357+
fi
347358

348359
query="SHOW GRANTS FOR '$DBUSER'@'localhost'"
349360
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" |\
@@ -360,6 +371,8 @@ dump_pgsql_database() {
360371
eval $host_str
361372
export PGPASSWORD="$PASSWORD"
362373
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
374+
rm -rf $tmpdir
375+
echo "Can't parse pgsql config" | mail -s "$subj" $email
363376
echo "Error: postgresql config parsing failed"
364377
log_event "$E_PARSING" "$EVENT"
365378
exit $E_PARSING
@@ -368,6 +381,8 @@ dump_pgsql_database() {
368381
query='SELECT VERSION()'
369382
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
370383
if [ '0' -ne "$?" ]; then
384+
rm -rf $tmpdir
385+
echo "Can't connect to pgsql server $HOST" | mail -s "$subj" $email
371386
echo "Error: Connection failed"
372387
log_event "$E_DB" "$EVENT"
373388
exit $E_DB
@@ -376,6 +391,14 @@ dump_pgsql_database() {
376391
pg_dump -h $HOST -U $USER -p $PORT -c -d -O -x -i -f $dump $database \
377392
2> /dev/null
378393

394+
if [ '0' -ne "$?" ]; then
395+
rm -rf $tmpdir
396+
echo "Can't dump pgsql database $database" | mail -s "$subj" $email
397+
echo "Error: dump $database failed"
398+
log_event "$E_DB $EVENT"
399+
exit $E_DB
400+
fi
401+
379402
query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
380403
md5=$(psql -h $HOST -U $USER -p $PORT -c "$query"|head -n1|cut -f 2 -d \ )
381404
pw_str="UPDATE pg_authid SET rolpassword='$md5' WHERE rolname='$DBUSER';"

0 commit comments

Comments
 (0)