背景:项目部署在别人服务器,不知道别人的服务器和域名什么时候到期,不能重新部署,只能等服务器停用的时候才能移植。现只有宝塔账号,没有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版权协议,转载请附上原文出处链接和本声明。