Linux的RSYNC非常好用,简单方便,配合linux的cron来定时同步两台VPS内容。
目前VPS的价格非常便宜,一年30美元左右非常常见。我购买的vultr的新泽西VPS外加50G免费存储空间,使用rysnc,配合linux的crob和数据库的mysqldump,来同步国外的阿里云VPS与国外的VPS,备份数据。
国外的VPS满足了科学上网、建站、备份三个功能。
注意:这个办法不是实时备份,我是以一天为单位,因为mysqldump会占用资源,如果时间间隔太短,会影响VPS的性能。对于实时备份需求,那站点肯定是比较大,也不在乎这点成本了。
1、Mysql数据库备份
对于使用innodb引擎,mysqldump命令如下:
mysqldump -u数据库用户名 -p数据库密码 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --single-transaction 数据库名 | gzip > 备份目录/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz
对于使用MYISAM引擎,mysqldump命令如下:
mysqldump -u数据库用户名 -p数据库密码 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob 数据库名 | gzip > 备份目录/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz
2、RSYNC命令测试
此RSYNC命令运行在目录主机中
rsync -avzhe 'ssh -p SSH端口' 用户名@IP地址:源数据文件目录 目录主机目录
需要注意:
此操作的前提是同步用户名开启了SSH密钥登录,密钥没有密码保护,否则只能用用户名和密码,但是用户名和密码没有办法使用LINUX的计划任务,没有意义
关于SSH密钥登录的设置,可以查看
3、设置linux的计划任务
linux当前用户的计划任务编辑命令是crontab -e
需要源VPS中设置mysqldump数据导出的计划任务
30 3 * * * mysqldump -u数据库用户名 -p数据库密码 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob 数据库名 | gzip > 备份目录/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz
以上命令中是每一天的3点30分,时区是VPS设置的时区的,可以设置不同的时间点
同样的格式,需要在目标主机VPS中运行crontab -e来设置RSYNC的计划任务
每天4点半同步网站源文件
30 4 * * * rsync -avzhe 'ssh -p SSH端口' 用户名@IP地址:源数据文件目录 目录主机目录
每天5点同步网站数据库备份文件,同步完成后删除源文件
0 5 * * * rsync --remove-source-files -avzhe 'ssh -p SSH端口' 用户名@IP地址:源数据文件目录 目录主机目录