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
|
#!/bin/bash
SOURCES="/var /etc"
LOGDIR='/mnt/backup/codelove.org/log'
RSYNCLOG='rsync.log.0'
LOG=$LOGDIR'/backup.log.0'
WORKDIR=/mnt/backup/codelove.org
cd $WORKDIR
if [ -f $LOGDIR/backup.log.10 ]
then
rm $LOGDIR/backup.log.10
fi
if [ -f $LOGDIR/rsync.log.10 ]
then
rm $LOGDIR/rsync.log.10
fi
for ((I=9;I>-1;I-=1)); do
J=$(($I+1))
if [ -f "$LOGDIR/backup.log.$I" ]
then
mv $LOGDIR/backup.log.$I $LOGDIR/backup.log.$J
fi
if [ -f "$LOGDIR/rsync.log.$I" ]
then
mv $LOGDIR/rsync.log.$I $LOGDIR/rsync.log.$J
fi
done
echo '['`date '+%H:%m:%S'`']: INFO Starting.' >> $LOG
if [ -d "backup.10" ]
then
echo '['`date '+%H:%m:%S'`']: INFO Deleting oldest backup.' >> $LOG
rm -rf backup.10
fi
echo '['`date '+%H:%m:%S'`']: INFO Rotating old backups...' >> $LOG
for ((I=9;I>-1;I-=1)); do
if [ -d "backup.$I" ]
then
J=$(($I+1))
echo '['`date '+%H:%m:%S'`']:'" INFO Renaming backup.$I to backup.$J" >> $LOG
mv backup.$I backup.$J
fi
done
echo '['`date '+%H:%m:%S'`']: INFO Rotation Finished.' >> $LOG
if [ -d "backup.1" ]
then
echo '['`date '+%H:%m:%S'`']: INFO Found latest backup.' >> $LOG
LATEST='--link-dest=../backup.1'
else
echo '['`date '+%H:%m:%S'`']: ERROR No backups found. Creating new backup.' >> $LOG
fi
echo '['`date '+%H:%m:%S'`']: INFO Running MySQL backup...' >> $LOG
/mnt/backup/codelove.org/bin/mysql-backup.sh 2>&1 >> $LOG
echo '['`date '+%H:%m:%S'`']: INFO Finished running MySQL backup.' >> $LOG
echo '['`date '+%H:%m:%S'`']: INFO Kicking off SVN backup...' >> $LOG
/mnt/backup/codelove.org/bin/svn-backup.sh 2>&1 >> $LOG
echo '['`date '+%H:%m:%S'`']: INFO Finished running SVN backup.' >> $LOG
echo '['`date '+%H:%m:%S'`']: INFO Copying new data...' >> $LOG
mkdir backup.0
for source in $SOURCES; do
rsync -avz --delete --include-from=include.rsync --exclude-from=exclude.rsync -t $LATEST $source ./backup.0 > $LOGDIR/$RSYNCLOG
done
echo '['`date '+%H:%m:%S'`']: INFO Finished copying new data.' >> $LOG
echo '['`date '+%H:%m:%S'`']: INFO Setting permissions.' >> $LOG
chmod 750 backup.0
echo '['`date '+%H:%m:%S'`']: INFO Finished.' >> $LOG
|