-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackup_websites.sh
executable file
·72 lines (59 loc) · 1.78 KB
/
backup_websites.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash
# Websites + MySQL backup script & RSYNC & Email notification
# Source https://github.com/petitsurfeur/backup-rsync
# Copyright (c) 2018-2020 petitsurfeur
# This script is licensed under GNU GPL version 2.0 or above
######## CONFIGURATION ########
### System Setup ###
HOSTNAME=$(hostname -s)
WEB_DIR="/var/www"
NOW=$(date +"%Y-%m-%d")
DAY=$(date +"%A")
BACKUP_DIR=/tmp/backup.$NOW
VHOST_DIR="/etc/apache2/sites-available"
### MySQL Setup ###
MUSER=""
MPASS=""
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
### RSYNC Setup ###
REMOTE_HOST=""
REMOTE_PORT="" # REMOTE SSH PORT
REMOTE_DIR="/srv/backup/"
REMOTE_USER=""
### MAIL Setup ###
MAIL_TO="admin@"
######## END CONFIGURATION ########
### Create backup folder
[ ! -d $BACKUP_DIR ] && mkdir -p $BACKUP_DIR || :
### Backup every website
cd $WEB_DIR
for website in * ; do
if [[ -d $website && ! -L "$website" ]]; then
echo "Found website folder: $website"
date=$(date -I)
tar -zcvf $BACKUP_DIR/website-$website.$NOW.tar.gz $website
fi
done
### Backup vhosts
tar -zcvf $BACKUP_DIR/vhost.$(hostname -s).$NOW.tar.gz $VHOST_DIR
### Backup every SQL database
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
FILE=$BACKUP_DIR/mysql-$db.$NOW.gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP > $FILE
done
### Dump backup using RSYNC
status=0
rsync -e "ssh -p $REMOTE_PORT" -avzp $BACKUP_DIR $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR || status=$?
echo $status
### SEND MAIL & REMOVE TMP
if ((status != 0)); then
echo "!! ALERT !! WEB/SQL Backup $HOSTNAME FAILED" | mail -s "!! ALERT !! WEB/SQL Backup $HOSTNAME FAILED" $MAIL_TO
else
ls $BACKUP_DIR | mail -s "WEB/SQL Backup $HOSTNAME SUCCEDED" $MAIL_TO
rm $BACKUP_DIR -Rf
fi