snippets / rotate

All snippets tagged rotate (1)

  1. Rotate backup files (mysql - mysqlhotcopy)

    Makes backup named 1_dump.tar.gz, 2_dump.tar.gz... You'll get as many backup as $ROT_PERIOD. In this example, you have backup history for 15 days. Date is stored via extracted tgz dir name.

     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
    Posted by babeloued to shell mysql mysqlhotcopy rotate backup ... saved by 3 persons ... 0 comments ... 11 months, 3 weeks
showing 10, 25, 50 items per pages

Pages : 1

Flux RSS friendsnippetLatest snippets


More...