数据备份是网站建设的一个重要环节,毕竟谁也不能保证自己的数据能不丢失,而一旦丢失,很有可能就恢复不了。所以经常备份自己的网站数据是非常必要的,下面来介绍一下如何在自己的VPS中自动、定时的进行数据备份。
一、申请Dropbox App
打开 Dropbox App 创建页面,按照申请步骤选择Dropbox API 、选择保存文件的目录、填写 App 应用名称。
都填好后点击 Create app 创建App。
创建成功后会跳转到 App 设置页面,这时候点击 Generated access token ,将生成的字符串保存好。
二、配置 Dropbox 上传脚本
打开Xshell 或 Putty 登陆VPS,下载 Dropbox 上传脚本
wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
设置 dropbox_uploader.sh 脚本权限,并配置脚本。
chmod +x dropbox_uploader.sh
./dropbox_uploader.sh
执行脚本后会提示你输入 Access token ,将刚才在 Dropbox App 页面获取的字符串复制进来,回车。y,回车。
配置信息保存成功后我们的VPS就绑定了App了。
三、配置网站备份脚本
新建一个网站备份脚本
vi backup.sh
将下面的脚本内容编辑好粘贴进去
#!/bin/bash
SCRIPT_DIR="/root" #这个改成你存放刚刚下载下来的dropbox_uploader.sh的文件夹位置
DROPBOX_DIR="/backup" #这个改成你的备份文件想要放在Dropbox下面的文件夹名称,如果不存在,脚本会自动创建
BACKUP_SRC="/home/wwwroot /usr/local/nginx/conf" #这个是你想要备份的本地VPS上的文件,不同的目录用空格分开
BACKUP_DST="/tmp" #这个是你暂时存放备份压缩文件的地方,一般用/tmp即可
MYSQL_SERVER="localhost" #这个是你mysql服务器的地址,一般填这个本地地址即可
MYSQL_USER="mysqluser" #这个是你mysql的用户名名称,比如root或admin之类的
MYSQL_PASS="password" #这个是你mysql用户的密码
# 下面的一般不用改了
NOW=$(date +"%Y.%m.%d")
DESTFILE="$BACKUP_DST/$NOW.tar.gz"
# 备份mysql数据库并和其它备份文件一起压缩成一个文件
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql"
tar cfz "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql"
# 用脚本上传到dropbox
$SCRIPT_DIR/dropbox_uploader.sh upload "$DESTFILE" "$DROPBOX_DIR/$NOW.tar.gz"
# 删除本地的临时文件
rm -f "$NOW-Databases.sql"
rm -f "$DESTFILE"
赋予脚本权限
chmod +x backup.sh
备份的时候执行这个脚本就能保存到Dropbox了
./backup.sh
四、设置定时任务自动备份网站数据到Dropbox
crontab -e
粘贴以下代码,保存。
0 3 * * * /root/backup.sh
重启crond。这样以后每天3点都会自动将网站数据备份到Dropbox了。
/bin/systemctl restart crond.service
其它
我现在就是使用此方法将这个 WordPress 博客数据备份到 Dropbox,如果你觉得麻烦,也可以使用其它方法,例如安装一些插件来达到此目的,但并不推荐,毕竟WordPress已经够臃肿了,插件装多了会对VPS增加一些不必要的负担。
当然,如果你使用 Vultr 的 VPS,可以免费使用 Snapshots 快照功能对整个VPS进行备份,更加简单、快速。
参考资料:
http://keenwon.com/449.html
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html