经过几个月的努力,我找到了一个可以完成这项工作的 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 目录每次备份时都会堆叠文件。没什么大不了的。但经过一年的夜间备份后,它可能会变得有点满。所以我喜欢在上传后清除该目录。另外,我不想让我的托管服务重载,因此我希望在上传之前清除远程服务器目录。最后我希望它上传到远程服务器上的子目录,例如/mysql
最佳答案
为什么要重新发明轮子?您可以使用 Debian的automysqlbackup包(Ubuntu 上也应该可用)。
对于清理旧文件,以下命令可能会有所帮助:
find /mysql -type f -mtime +16 -delete
可以使用scp
(1)命令上传到远程服务器;
为了避免密码提示,请阅读 SSH public key authentication
关于ubuntu 服务器上的 Mysql 自动备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25538787/