snippet: view plain - save this
1 #!/bin/bash
2
3 ################################################
4 # author : Alexandre BULTE - alexandre[at]bulte[dot]net
5 # license : GPL v2
6 ################################################
7
8 BACKUP_PATH='/home/xxx/backup'
9 # db names
10 DBS='db1 db2 db3'
11 MYSQL_USER='root'
12 MYSQL_PASSWD='xxxxxx'
13 ROT_PERIOD=15
14 NEXT_ID=0
15 DATE_TODAY=$( date +%Y%m%d-%H%M%S )
16
17 # rep sauvegarde
18 REP=$BACKUP_PATH/$DATE_TODAY
19 if [ ! -d $REP ];
20 then
21 mkdir $REP
22 fi
23
24 # fetch biggest id in dir
25 cd $BACKUP_PATH
26 BIG_ID=$( ls -1 *_dump.tar.gz | tail -n 1 | cut -d '_' -f 1 ) &> /dev/null
27
28 if [ ! $BIG_ID ];
29 then
30 BIG_ID=0
31 fi
32
33 # rotation if at least 1_dump.tar.gz
34 for i in $( seq 1 $BIG_ID );
35 do
36 NEXT_ID=$( expr $i + 1 )
37 NEXT_FILENAME=$NEXT_ID'_dump.tar.gz'
38 FILENAME=$i'_dump.tar.gz'
39 if [ -e $FILENAME ];
40 then
41 echo "$FILENAME exists"
42 if [ $i = $ROT_PERIOD ];
43 then
44 echo "Removing oldest archive..."
45 rm $i'_dump.tar.gz'
46 else
47 echo "Rotating $i..."
48 cp $FILENAME $NEXT_FILENAME
49 fi
50 fi
51 done
52
53 # sauvegarde
54 mysqlhotcopy -q -u $MYSQL_USER -p $MYSQL_PASSWD $DBS $REP
55
56 # compression
57 tar cfz 1_dump.tar.gz $DATE_TODAY
58
59 # suppression
60 rm -rf $DATE_TODAY

0 comments