ubuntu服务器上的Mysql自动备份

时间:2014-08-28 00:02:29

标签: mysql bash shell ubuntu backup

经过几个月的尝试,我发现了一个可以完成工作的shell脚本。

继承我正在使用的代码

#!/bin/bash
### MySQL Server Login Info ###
MUSER="root"
MPASS="MYSQL-ROOT-PASSWORD"
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
BAK="/backup/mysql"
GZIP="$(which gzip)"
### FTP SERVER Login info ###
FTPU="FTP-SERVER-USER-NAME"
FTPP="FTP-SERVER-PASSWORD"
FTPS="FTP-SERVER-IP-ADDRESS"
NOW=$(date +"%d-%m-%Y")

### See comments below ###
### [ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/* ###
[ ! -d "$BAK" ] && mkdir -p "$BAK"

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
 FILE=$BAK/$db.$NOW-$(date +"%T").gz
 $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done

lftp -u $FTPU,$FTPP -e "mkdir /mysql/$NOW;cd /mysql/$NOW; mput /backup/mysql/*; quit" $FTPS

一切都运行良好,但有一些我想解决的问题,但在shell脚本方面却毫无头绪。我不是要求任何人写它。只是一些指示。首先,我的服务器上的/ backup / mysql目录每次备份时都会堆叠文件。不是很重要。但经过一年的夜间备份后,它可能会有点充实。所以id就像上传后清除该目录一样。此外,我不想让我的托管服务超载文件,所以我喜欢在上传之前清除远程服务器目录。最后我希望它上传到远程服务器上的子目录,例如/ mysql

2 个答案:

答案 0 :(得分:0)

为什么重新发明轮子?您可以使用Debianautomysqlbackup包(也应该在Ubuntu上提供)。

对于清除旧文件,以下命令可能有所帮助:

find /mysql -type f -mtime +16 -delete

可以使用scp(1)命令上传到远程服务器;
要避免密码提示,请阅读SSH public key authentication

答案 1 :(得分:0)

看看Backup,它允许您使用Ruby DSL建模备份作业,功能非常强大。

支持多个数据库和最流行的在线存储,以及许多很酷的功能。

相关问题