定时备份数据库文件并存储本地

背景:项目部署在别人服务器,不知道别人的服务器和域名什么时候到期,不能重新部署,只能等服务器停用的时候才能移植。现只有宝塔账号,没有root密码,想要实现实时远程备份数据库到另一台服务器
思路:(亲测有效)
1.先创建定时任务每一天备份一次数据库
2.找到数据库备份文件位置
3.通过rsync命令远程备份到其他服务器
4.通过shell脚本定时执行rsync命令
rsync功能能够自动同步文件,非常方便,但是它在远程拷贝文件之前提示还需要输入一个密码,要实现脚本自动拷贝,必须要优化掉这个步骤,所以要提前设置了rsync 免密方式自动同步文件,简单两步即可实现
1.在备份机上执行命令,然后一路回车

ssh-keygen

2.拷贝这个密码文件到远程服务器主机上,继续执行命令

ssh-copy-id -i ~/.ssh/id_rsa.pub root@XX.XX.XX.XXX

准备工作已做好,下面正式开始步骤

1.宝塔创建计划任务,方便快捷。
备份想要的数据库文件,找到文件位置,我的文件是在/www/backup/database/下
在这里插入图片描述
2.通过rsync命令远程备份

这条命令的意思是将目录/www/backup/database/下的所有文件复制到远程服务器XX.XX.XX.XXX的/www/wwwroot/databasebackup下

rsync -avzu --progress /www/backup/database/ root@XX.XX.XX.XXX:/www/wwwroot/databasebackup/

执行命令会要求输入远程服务器root密码,输入密码后回车即可(这台远程服务器是我自己的服务器)
然后等待文件复制成功。如图:一个文件复制成功。
在这里插入图片描述
3.将命令写入.sh文件,创建一个a.sh文件,并授权

touch a.sh
chmod a+x a.sh

执行文件测试结果

./a.sh

4.宝塔再来创建一个shell脚本的计划任务,定时执行命令(注意:这里创建的时间要在第一步备份数据库之后,这样的话就是最新的数据库文件)
在这里插入图片描述

5.在远程服务器上查看文件是否生成。


版权声明:本文为zdzzn1314原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。