为什么要自动备份网站文件和数据库且还要自动上传到云盘?都说数据无价!这么做的主要原因是云厂商可能会把我们的账号封禁,连同这个账号下的全部VPS直接销毁!还有VPS所在机房、数据中心火灾等灾难也可能导致我们的服务器上的数据消失在灿烂的焰火中。
刚好,我有个稍稍有点悲伤的故事你稍稍了解一下,具体点的吐槽发布在论坛里,点此访问。我其中一个网站用的是甲骨文云(Oracle cloud)付费账户的VPS。尽管是付费用户,我依旧用的他们家可免费使用的服务器,确实是那个网站已经足够使用。
甲骨文封禁账号早有耳闻,这个事情发生属实意料之中。却没想到这么粗暴,直接封号删机,连数据转移的机会都不给。还好,网站内容不多,我直接从谷歌的缓存页面将内容恢复了过来。
温馨提示:各位站长、博主.. 记得做好数据备份。
虽然我们个人不能做到大厂的容灾备份,但起码也算更稳妥了一分!如果还担心谷歌账号被封了咋办?那就再找找办法自动传回到自己的本地硬盘上吧!或者定时从服务器、谷歌云盘上下载备份数据到本地。
lnmp自动备份网站上传到云盘的步骤
站长WordPress建站用的是lnmp一键安装包,这个程序中自带了备份脚本。我们只需修改脚本的部分参数,安装gdrive与谷歌云端硬盘授权,并配置好自动上传脚本即可。
修改备份脚本参数
修改/root/lnmp1.8/tools/backup.sh 备份脚本的几个参数。清注意:如果升级了lnmp一键安装包,此文件应需要再次修改。
Backup_Home="/home/backup/" # 此为备份文件存放目录
MySQL_Dump="/usr/local/mysql/bin/mysqldump" # mysqldump路径,如果是mariadb,替换/usr/local/mysql为/usr/local/mariadb
######~Set Directory you want to backup~######
Backup_Dir=("/home/wwwroot/eluyee.com" "/home/wwwroot/avatar.eluyee.com") # 要备份的目录,目录用双引号括起来,多个目录空格隔开
######~Set MySQL Database you want to backup~######
Backup_Database=("lnmp" "eluyee") # 要备份的数据库,目录用双引号括起来,多个目录空格隔开
######~Set MySQL UserName and password~######
MYSQL_UserName='root' # MySQL root账号
MYSQL_PassWord='yourrootpassword' # MySQL root密码
######~Enable Ftp Backup~######
Enable_FTP=0 # 是否启用ftp备份。0 启用;1 不启用
# 0: enable; 1: disable
######~Set FTP Information~###### ftp账号信息
FTP_Host='1.2.3.4'
FTP_Username='eluyee.com'
FTP_Password='yourftppassword'
FTP_Dir="backup" # ftp服务器上存放备份的目录
#Values Setting END! 默认备份文件保存3天,可以修改backup.sh里的-3day为你指定的天数。
Gdrive 安装与谷歌云盘授权
Gdrive项目地址:https://github.com/prasmussen/gdrive,gdrive 是用于与 Google Drive 交互的命令行实用程序。
选择适合自己服务器的Gdrive版本下载安装。安装2.1.1版本gdrive时,在执行 gdrive about 命令后,若出现 -bash: /usr/local/bin/gdrive: No such file or directory 错误,那么执行apt install -y musl可解决。
cd /usr/bin
wget https://github.com/prasmussen/gdrive/releases/download/2.1.1/gdrive_2.1.1_linux_amd64.tar.gz
tar -zxf gdrive_2.1.1_linux_amd64.tar.gz
chmod +x /usr/bin/gdrive
apt install -y musl
gdrive about
执行后以上命令后,会出现一串URL并询问验证码,将URL地址复制粘贴到浏览器打开。
允许你要授权的谷歌账号,将返回的验证码复制粘贴到连接VPS的终端中。
返回谷歌账号信息表示gdrive已安装并配置完成。
设置自动上传Google Drive脚本
编写脚本并添加到cron(基于时间的任务管理系统)使其按规定时间将备份文件夹上传到谷歌云盘,直接在vps上编辑 backupload.sh。
sudo -i
vi backupload.sh
写入如下代码后保存,其中路径等内容自行修改。
#!/bin/bash
BakDate=`date +%Y%m%d%H%M`
/root/lnmp1.8/tools/backup.sh
cp -r /home/backup /home/eluyee-${BakDate}
/usr/bin/gdrive upload --recursive /home/eluyee-${BakDate}
rm -rf /home/eluyee-${BakDate}
试运行一次网站备份自动上传脚本。
chmod +x backupload.sh
/root/backupload.sh
出现Uploading …,表示脚本执行成功。接下来执行
crontab -e
在最后一行添加
0 3 */3 * * /root/backupload.sh
其中/root/backupload.sh是脚本的完整路径,你可以根据自己的喜好修改。保存成功后,服务器每隔3天的凌晨3点0分,系统会自动备份服务器网站文件和数据库并上传到Google Drive。