-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackup.sh
More file actions
executable file
·122 lines (93 loc) · 2.7 KB
/
backup.sh
File metadata and controls
executable file
·122 lines (93 loc) · 2.7 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/bash
# Full Backup of all mysql database and www files
# ---------------------------------------------------------------------
### System Setup ###
DATADIRS="/var/log/ /etc/"
WEBDIR="/var/www"
INCFILE="/root/tar-inc-backup"
YEAR=$(date +"%Y")
NOW=$(date +"%Y-%m-%d-%T")
BACKUPDIR="/media/data/backup"
DAY=$(date +"%a")
FULLBACKUP="Sun"
# Amazon S3 storage info
S3CONFIG="/home/ec2-user/.s3cfg"
S3TARGET="s3://backup.sofasurfer.org/sofaweb/$YEAR"
### MySQL Setup ###
MUSER="root"
MPASS="???"
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
### Other stuff ###
EMAILID="webmaster@sofasurfer.ch"
### Check if Backup Directory Exist ###
if [ "$DAY" = "$FULLBACKUP" -o "$1" == "full" ]; then
BACKUP=$BACKUPDIR/$NOW-full
else
BACKUP=$BACKUPDIR/$NOW-incremental
fi
[ ! -d $BACKUP ] && mkdir -p $BACKUP || :
### Start general Backup ###
if [ "$DAY" = "$FULLBACKUP" -o "$1" == "full" ]; then
for FOLDER in $DATADIRS
do
FILE="$BACKUP/data-$(basename $FOLDER).tar.bz2"
tar -jcf $FILE $FOLDER
echo $FILE
done
else
echo "Ignore datadir"
fi
### Start MySQL Backup ###
echo "Start Backup:$BACKUP"
# Get all databases name
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
FILE=$BACKUP/mysql-$db.sql
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db -r $FILE
tar -jcvf $FILE.tar.bz2 $FILE
rm $FILE
done
### Start WWW Backup ###
### See if we want to make a full backup ###
for FOLDER in $WEBDIR/*;
do
PATHNAME=$(basename "$FOLDER")
if [ "$DAY" = "$FULLBACKUP" -o "$1" == "full" ];
then
FILE="$BACKUP/www-$PATHNAME-full.tar.bz2"
tar -jcf $FILE $FOLDER
else
FILE="$BACKUP/www-$PATHNAME-incremental.tar.bz2"
tar -g "$INCFILE-$PATHNAME" -jcf $FILE $FOLDER
fi
echo "Backup $FOLDER \t->\t $FILE"
done
### delete old backup directories ###
find "$BACKUPDIR/" -ctime +1 -delete
### Upload to S3 ###
if [ "$S3CONFIG" = "false" ];
then
echo "Skip s3cmd"
else
s3cmd sync --config=$S3CONFIG --skip-existing "$BACKUPDIR/" "$S3TARGET/"
### Delete incremental files
if [ "$DAY" = "$FULLBACKUP" -o "$1" == "full" ]; then
s3cmd --config=$S3CONFIG --recursive --exclude "*full/*" --exclude="*webmin*" del "$S3TARGET/"
fi
fi
### Find out if ftp backup failed or not ###
LOCATION=$(basename "$BACKUP")
TOTALFILES=$(ls -1 $BACKUP | wc -l)
if [ "$?" = "0" ];
then
MESSAGE="home.sofasurfer.org - #backup #success - Location: $LOCATION Files: $TOTALFILES"
else
MESSAGE="home.sofasurfer.org - #backup #FAILED - Location: $LOCATION Files: $TOTALFILES"
fi
python /usr/local/bin/tweet.py "$MESSAGE"
#mailx -s "$MESSAGE" < /dev/null "$EMAILID"
rm -f $T