• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

带自动清理功能的MySQL备份到FTP的Shell脚本

mysql 搞代码 4年前 (2022-01-09) 32次浏览 已收录 0个评论

以前公司用的一个网上找的MySQL自动备份到FTP的Shell脚本,一直用着不错。但是问题就是随着备份文件的越来越多,不得不定期清理FTP上的老备份文件,十分的不便。 实际上MySQL备份无需保留太长时间的,如果能有自动清理旧的备份文件的功能就好了。不过网上找

以前公司用的一个网上找的MySQL自动备份到FTP的Shell脚本,一直用着不错。但是问题就是随着备份文件的越来越多,不得不定期清理FTP上的老备份文件,十分的不便。

实际上MySQL备份无需保留太长时间的,如果能有自动清理旧的备份文件的功能就好了。不过网上找了一下,虽然也有这方面的脚本,不过可能不太符合我的需求吧。于是只能自己手动改下以前的那个Shell脚本来实现咯。

首先我们要确定保留备份的时间,我觉得一个月的备份保留就足够了。因为基本不会出现1个月后要恢复1个月之前备份的情况。(如果有请自己手动备份,毕竟自动备份还是不能取代手动备份的部分)。那么我们的思路就出来了:在上传以当天日期为文件名的备份的时候,顺便删除下一个月之前的同日期备份,就可以确保服务器上保留的是最近一个月的备份了。

然后我们需要知道Linux下的一个命令:date。这是个可以查看当前服务器的时间日期信息的命令。当然这里我们需要知道的是这个命令的参数,毕竟我们需要得到的是日期部分。

输入下面这个命令,可以看到“年-月-日”的输入,类似“2011-09-09”:

date +%Y-%m-%d

那么,如果我们要得到1个月之前的日期怎么办呢?使用下面的这条命令就可以得到:

date -d last-month +%Y-%m-%d

怎么样?简单吧。实际备份的时候,因为之前脚本使用的是“m-d-Y”的形式,也就是“月-日-年”的形式,所以我稍微做了下调整。但是下面这个Shell脚本中的是按照“年-月-日”来产生文件名的。

于是,给出整个备份Shell脚本,需要的朋友只需要填写下有中文说明的部分,即可在自己的Linux服务器上使用。使用办法:复制到某个目录下,然后给予执行权限,再在cron中设置每天指定时间运行即可。(关于这部分,请自行查找相关说明,这里不再复述)

带自动清理功能的MySQL备份到FTP的Shell脚本如下:

#!/bin/bashMyUSER="db_username"     # 数据库用户名,建议使用root账户或者拥有全局权限的用户名MyPASS="db_password"       # 数据库密码MyHOST="localhost"          # 数据库服务器# Linux bin paths, change this if it can't be autodetected via which commandMYSQL="$(which mysql)"MYSQLDUMP="$(which mysqldump)"CHOWN="$(which chown)"CHMOD="$(which chmod)"GZIP="$(which gzip)"# 数据库备份的路径DEST="/home/backup"# Main directory where backup will be storedMBD="$DEST/mysql"# Get hostnameHOST="$(hostname)<strong>本文来源gaodai#ma#com搞@代~码^网+</strong>"# Get data in dd-mm-yyyy formatNOW="$(date +%d-%m-%Y)"OLD="$(date -d last-month +%d-%m-%Y)"# File to store current backup fileFILE=""# Store list of databasesDBS=""# DO NOT BACKUP these databasesIGGY="test"rm -rf $MBD[ ! -d $MBD ] && mkdir -p $MBD || :# Only root can access it!$CHOWN 0.0 -R $DEST$CHMOD 0600 $DEST# Get all database list firstDBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"cat > ftpcc.sh <<EOFcd $MBDftp -i -n<> ftpcc.sh        # do all inone job in pipe,        # connect to mysql using mysqldump for select mysql database        # and pipe it out to gz file in backup dir :)        $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE    fidonecat >> ftpcc.sh <<EOFclosebye!EOFsh ftpcc.shrm ftpcc.sh

这样的Shell脚本运行后,可以得到每个MySQL库的独立备份文件,且以gz格式压缩以便节省空间。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:带自动清理功能的MySQL备份到FTP的Shell脚本

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址