Ubuntu中mysql备份并仅保存最新的几份备份文件

Ubuntu中mysql备份并仅保留最新的几份备份文件sudo gedit /home/你的文件名/mysql.backup.sh#!/bin/bash##

Ubuntu中mysql备份并仅保留最新的几份备份文件
sudo gedit /home/你的文件名/mysql.backup.sh

#!/bin/bash### 将备份文件以*.sql格式保存至/backup/mysql中,根据时间保留最新固定的备份文件数 ###### MySQL Server Login Info ###MUSER="root"MPASS="123456"MHOST="localhost"#指明命令的路径MYSQL="$(which mysql)"MYSQLDUMP="$(which mysqldump)"BAK="/backup/mysql"LS="$(which ls)"GAWK="$(which gawk)"XARGS="$(which xargs)"RM="$(which rm)"#获得mysql数据库中所有的数据库名称DBS="$($MYSQL -u$MUSER -h$MHOST -p$MPASS -Bse 'show databases')"#不需备份的数据库IGNOREDBS="information_schema mysql"#每个数据库保留的备份数PERBAKS=40#需要备份的数据库数量,值将在for脚本中获得tables=0NOW=$(date +"%Y%m%d-%T")#若路径不存在,则创建之[ ! -d $BAK ] && mkdir -p $BAKfor db in $DBSdo        skipdb=-1        if [ "$IGNOREDBS" != "" ];    then    for i in $IGNOREDBS    do        [ "$db" == "$i" ] && skipdb=1 || :    done    fi     if [ "$skipdb" == "-1" ] ; then    FILE=$BAK/$db.$NOW.sql    echo -e $NOW "开始备份……数据库"++===$db===++>>$BAK/backup.log    #备份数据库    $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db  > $FILE    #需要备份的数据库数    tables=$[ $tables + 1 ]     fidoneecho -e $tables"个数据库已备份完成" >>$BAK/backup.log#需要保留的文件数=数据库数*每份数据库需要保留的份数COUNT=$[ $tables * $PERBAKS ] echo -e $NOW "共备份"$tables"个数据库,保留"$PERBAKS"份备份,以下文件将删除" >>$BAK/backup.log$LS -t $BAK/*.sql|$GAWK '{sum+=1;if(NR>'$COUNT'){print sum$1}}' >>$BAK/backup.log$LS -t $BAK/*.sql|$GAWK '{if(NR>'$COUNT'){print $1}}'|$XARGS $RM -f$LS -t $BAK/*.sql|$GAWK '{sum+=1} END {print sum}'>>$BAK/backup.log echo "=======================================================">>$BAK/backup.logftp -v -n 192.168.0.1 <<ENDuser 用户名 密码binarycd /home/ftp/dbbacklcd $BAKpromptmput $FILEclosebye
?2.赋执行权限
sudo chmod +x /home/你的文件名/mysql.backup.sh

?

3.编辑定时执行

sudo gedit /etc/crontab

?

? 或sudo crontab -e

在#前一行增加如下脚本,即每天23:59分执行备份

59 23   * * *   root    /home/monica/mysql.backup.sh

?

?? 如需每几个小时执行一次,则需指定在哪一分钟执行此脚本,否则每几个小时后,将在一个小时内每分钟执行一次。如下每6个小时的第一分钟时执行一次。[0,6,12,18]点各执行一次。

?

1 */6   * * *   root    /home/monica/mysql.backup.sh??

?

4.备份文件于路径/backup/mysql可以查找到。

ftp -v -n ftp地址END user myftp 123456 binary cd /home/myftp lcd $BAK prompt mput $FILE close bye


更多可参考网站:http://www.cyberciti.biz/tips/how-to-backup-mysql-databases-web-server-files-to-a-ftp-server-automatically.html


 ### Find out if ftp backup failed or not ###    if [ "$?" == "0" ]; then    rm -f $BACKUP/*    else    T=/tmp/backup.fail    echo "Date: $(date)">$T    echo "Hostname: $(hostname)" >>$T    echo "Backup failed" >>$T    mail  -s "BACKUP FAILED" "$EMAILID" <$T    rm -f $T    fi