CENTOS7定时备份mysql上传数据至FTP服务器中
实现服务定时备份与历史数据删除
之前按照网上的方式去写定时备份脚本,遇到很多问题,第一就是,lcd和mput一直不起作用,后面发现是vi编辑复制存在问题,后面通过vim逐个手敲解决lcd命令不起作用的问题,随之而来出现第二个问题,就是使用mput传输多个文件只传一个,第一个成功之后后续一直提示是否要传,后续发现除了第一个其他的都不上传上去。花了一天时间在网上各种找方法都不行,自己发现通过定义多个参数可以实现传输,然后就搞定了。
脚本如下
#!/bin/bash
TIME=$(date +%Y%m%d)
TIME1=$(date -d "-1 day" +%Y%m%d) #定义时间变量
TIME2=$(date -d "-2 day" +%Y%m%d)
TIME3=$(date -d "-3 day" +%Y%m%d)
FILE=a.tar.gz
mysqlUsername=user #数据库用户名
mysqlPassword=passwd #数据库密码
mysqlhost=ip #数据库地址
mysqlschema=database #需要备份的数据库
day=30 #数据库备份保留天数
#开始备份
mysqldump -u$mysqlUsername -p$mysqlPassword -h$mysqlhost $mysqlschema>$(date +%Y%m%d)_$mysqlschema.sql
#打包备份文件
tar -zcvf - $(date +%Y%m%d)_$mysqlschema.sql | openssl des3 -salt -k passwd -out $(date +%Y%m%d)_$mysqlschema.tar.gz
#删除sql
rm -rf $(date +%Y%m%d)_$mysqlschema.sql
#删除过期的备份
rm -rf $(date +%Y%m%d -d "-$day days")_$mysqlschema.tar.gz
ftp -ivn ftpip<<EOF
user user password
binary
cd /Ren/sqlbak/ZGBAK #FTP存储地址
mdelete *.tar.gz #删除ftp服务多余备份
lcd /var/www/file/sys_report #本地备份数据地址
passive off
mput $TIME\_$FILE $TIME1\_$FILE $TIME2\_$FILE $TIME3\_$FILE #需要备份的数据
bye
EOF
echo "sucessfull"
注意:如果纯出现批量上传没办法全部传输,大部分与prompt这个参数有关,在对应节点新增或删除即可
加上定时任务每天执行一次就完成定时推送备份了
0 6 * * * root cd /var/www/file/sys_report && /bin/bash /var/www/file/sys_report/ftp.sh
传送门
https://blog.youkuaiyun.com/yanchenyu365/article/details/82256482